hydra-typescript 0.17.7 → 0.18.0
raw patch · 16 files changed
+12527/−12436 lines, 16 filesdep ~hydra-kernelPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hydra-kernel
API changes (from Hackage documentation)
- Hydra.Dsl.TypeScript.Syntax: arrayElementArrayElement :: TypedName ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayElementExpression :: TypedTerm Expression -> TypedTerm ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayElementHole :: TypedTerm ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayElementSpread :: TypedTerm SpreadElement -> TypedTerm ArrayElement
- Hydra.Dsl.TypeScript.Syntax: arrayTypeExpression :: TypedTerm TypeExpression -> TypedTerm ArrayTypeExpression
- Hydra.Dsl.TypeScript.Syntax: arrayTypeExpressionArrayTypeExpression :: TypedName ArrayTypeExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionBodyArrowFunctionBody :: TypedName ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionBodyBlock :: TypedTerm BlockStatement -> TypedTerm ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionBodyExpression :: TypedTerm Expression -> TypedTerm ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpression :: TypedTerm [Pattern] -> TypedTerm ArrowFunctionBody -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionArrowFunctionExpression :: TypedName ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern]
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionWithAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionWithBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: arrowFunctionExpressionWithParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern] -> TypedTerm ArrowFunctionExpression
- Hydra.Dsl.TypeScript.Syntax: asExpression :: TypedTerm Expression -> TypedTerm TypeExpression -> TypedTerm AsExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionAsExpression :: TypedName AsExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionExpression :: TypedTerm AsExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: asExpressionType :: TypedTerm AsExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionWithExpression :: TypedTerm AsExpression -> TypedTerm Expression -> TypedTerm AsExpression
- Hydra.Dsl.TypeScript.Syntax: asExpressionWithType :: TypedTerm AsExpression -> TypedTerm TypeExpression -> TypedTerm AsExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpression :: TypedTerm AssignmentOperator -> TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionAssignmentExpression :: TypedName AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionRight :: TypedTerm AssignmentExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionWithLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionWithOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentExpressionWithRight :: TypedTerm AssignmentExpression -> TypedTerm Expression -> TypedTerm AssignmentExpression
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAddAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAndAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorAssignmentOperator :: TypedName AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorBitwiseAndAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorBitwiseOrAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorBitwiseXorAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorDivideAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorExponentiateAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorLeftShiftAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorModuloAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorMultiplyAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorNullishAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorOrAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorRightShiftAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorSubtractAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentOperatorUnsignedRightShiftAssign :: TypedTerm AssignmentOperator
- Hydra.Dsl.TypeScript.Syntax: assignmentPattern :: TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternAssignmentPattern :: TypedName AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternRight :: TypedTerm AssignmentPattern -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternWithLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern -> TypedTerm AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: assignmentPatternWithRight :: TypedTerm AssignmentPattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
- Hydra.Dsl.TypeScript.Syntax: binaryExpression :: TypedTerm BinaryOperator -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionBinaryExpression :: TypedName BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionLeft :: TypedTerm BinaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionRight :: TypedTerm BinaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionWithLeft :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionWithOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryExpressionWithRight :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorAdd :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorAnd :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBinaryOperator :: TypedName BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBitwiseAnd :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBitwiseOr :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorBitwiseXor :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorDivide :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorExponentiate :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorGreaterThan :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorGreaterThanOrEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorIn :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorInstanceof :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorLeftShift :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorLessThan :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorLessThanOrEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorModulo :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorMultiply :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorNotEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorNullishCoalescing :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorOr :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorRightShift :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorStrictEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorStrictNotEqual :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorSubtract :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: binaryOperatorUnsignedRightShift :: TypedTerm BinaryOperator
- Hydra.Dsl.TypeScript.Syntax: callExpression :: TypedTerm Expression -> TypedTerm [Expression] -> TypedTerm Bool -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionArguments :: TypedTerm CallExpression -> TypedTerm [Expression]
- Hydra.Dsl.TypeScript.Syntax: callExpressionCallExpression :: TypedName CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionCallee :: TypedTerm CallExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: callExpressionOptional :: TypedTerm CallExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: callExpressionWithArguments :: TypedTerm CallExpression -> TypedTerm [Expression] -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionWithCallee :: TypedTerm CallExpression -> TypedTerm Expression -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: callExpressionWithOptional :: TypedTerm CallExpression -> TypedTerm Bool -> TypedTerm CallExpression
- Hydra.Dsl.TypeScript.Syntax: catchClause :: TypedTerm (Maybe Pattern) -> TypedTerm BlockStatement -> TypedTerm CatchClause
- Hydra.Dsl.TypeScript.Syntax: catchClauseBody :: TypedTerm CatchClause -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: catchClauseCatchClause :: TypedName CatchClause
- Hydra.Dsl.TypeScript.Syntax: catchClauseParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern)
- Hydra.Dsl.TypeScript.Syntax: catchClauseWithBody :: TypedTerm CatchClause -> TypedTerm BlockStatement -> TypedTerm CatchClause
- Hydra.Dsl.TypeScript.Syntax: catchClauseWithParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern) -> TypedTerm CatchClause
- Hydra.Dsl.TypeScript.Syntax: classDeclaration :: TypedTerm Identifier -> TypedTerm (Maybe Expression) -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody
- Hydra.Dsl.TypeScript.Syntax: classDeclarationClassDeclaration :: TypedName ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationId :: TypedTerm ClassDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: classDeclarationSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithComments :: TypedTerm ClassDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsClassDeclarationWithComments :: TypedName ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsWithBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration -> TypedTerm ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithCommentsWithComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithId :: TypedTerm ClassDeclaration -> TypedTerm Identifier -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: classDeclarationWithSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression) -> TypedTerm ClassDeclaration
- Hydra.Dsl.TypeScript.Syntax: commentBlock :: TypedTerm String -> TypedTerm Comment
- Hydra.Dsl.TypeScript.Syntax: commentComment :: TypedName Comment
- Hydra.Dsl.TypeScript.Syntax: commentDocumentation :: TypedTerm DocumentationComment -> TypedTerm Comment
- Hydra.Dsl.TypeScript.Syntax: commentLine :: TypedTerm String -> TypedTerm Comment
- Hydra.Dsl.TypeScript.Syntax: conditionalExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionConditionalExpression :: TypedName ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionTest :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionWithAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionWithConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: conditionalExpressionWithTest :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
- Hydra.Dsl.TypeScript.Syntax: doWhileStatement :: TypedTerm Statement -> TypedTerm Expression -> TypedTerm DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementBody :: TypedTerm DoWhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementDoWhileStatement :: TypedName DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementTest :: TypedTerm DoWhileStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementWithBody :: TypedTerm DoWhileStatement -> TypedTerm Statement -> TypedTerm DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: doWhileStatementWithTest :: TypedTerm DoWhileStatement -> TypedTerm Expression -> TypedTerm DoWhileStatement
- Hydra.Dsl.TypeScript.Syntax: documentationComment :: TypedTerm String -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationCommentDescription :: TypedTerm DocumentationComment -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: documentationCommentDocumentationComment :: TypedName DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationCommentTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag]
- Hydra.Dsl.TypeScript.Syntax: documentationCommentWithDescription :: TypedTerm DocumentationComment -> TypedTerm String -> TypedTerm DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationCommentWithTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
- Hydra.Dsl.TypeScript.Syntax: documentationTag :: TypedTerm String -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe Identifier) -> TypedTerm String -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagDescription :: TypedTerm DocumentationTag -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: documentationTagDocumentationTag :: TypedName DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagName :: TypedTerm DocumentationTag -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: documentationTagParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.TypeScript.Syntax: documentationTagType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression)
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithDescription :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithName :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier) -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: documentationTagWithType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression) -> TypedTerm DocumentationTag
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclaration :: TypedTerm (Maybe Identifier) -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationExportAllDeclaration :: TypedName ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationWithExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier) -> TypedTerm ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportAllDeclarationWithSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationAll :: TypedTerm ExportAllDeclaration -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationDeclaration :: TypedTerm Statement -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationDefault :: TypedTerm Expression -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationExportDeclaration :: TypedName ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportDeclarationNamed :: TypedTerm NamedExport -> TypedTerm ExportDeclaration
- Hydra.Dsl.TypeScript.Syntax: exportSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierExportSpecifier :: TypedName ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierWithExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: exportSpecifierWithLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
- Hydra.Dsl.TypeScript.Syntax: expressionArray :: TypedTerm ArrayExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionArrow :: TypedTerm ArrowFunctionExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionAsExpression :: TypedTerm AsExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionAssignment :: TypedTerm AssignmentExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionAwait :: TypedTerm Expression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionBinary :: TypedTerm BinaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionCall :: TypedTerm CallExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionConditional :: TypedTerm ConditionalExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionExpression :: TypedName Expression
- Hydra.Dsl.TypeScript.Syntax: expressionFunction :: TypedTerm FunctionExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionIdentifier :: TypedTerm Identifier -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionLiteral :: TypedTerm Literal -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionMember :: TypedTerm MemberExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionNew :: TypedTerm CallExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionObject :: TypedTerm ObjectExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionParenthesized :: TypedTerm Expression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionSequence :: TypedTerm [Expression] -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionSpread :: TypedTerm SpreadElement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionThis :: TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionUnary :: TypedTerm UnaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: expressionYield :: TypedTerm (Maybe Expression) -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: forInLeftForInLeft :: TypedName ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInLeftPattern :: TypedTerm Pattern -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInLeftVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInStatement :: TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementBody :: TypedTerm ForInStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: forInStatementForInStatement :: TypedName ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forInStatementRight :: TypedTerm ForInStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: forInStatementWithBody :: TypedTerm ForInStatement -> TypedTerm Statement -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementWithLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInStatementWithRight :: TypedTerm ForInStatement -> TypedTerm Expression -> TypedTerm ForInStatement
- Hydra.Dsl.TypeScript.Syntax: forInitExpression :: TypedTerm Expression -> TypedTerm ForInit
- Hydra.Dsl.TypeScript.Syntax: forInitForInit :: TypedName ForInit
- Hydra.Dsl.TypeScript.Syntax: forInitVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInit
- Hydra.Dsl.TypeScript.Syntax: forOfStatement :: TypedTerm Bool -> TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementAwait :: TypedTerm ForOfStatement -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: forOfStatementBody :: TypedTerm ForOfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementForOfStatement :: TypedName ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft
- Hydra.Dsl.TypeScript.Syntax: forOfStatementRight :: TypedTerm ForOfStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithAwait :: TypedTerm ForOfStatement -> TypedTerm Bool -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithBody :: TypedTerm ForOfStatement -> TypedTerm Statement -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forOfStatementWithRight :: TypedTerm ForOfStatement -> TypedTerm Expression -> TypedTerm ForOfStatement
- Hydra.Dsl.TypeScript.Syntax: forStatement :: TypedTerm (Maybe ForInit) -> TypedTerm (Maybe Expression) -> TypedTerm (Maybe Expression) -> TypedTerm Statement -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementBody :: TypedTerm ForStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: forStatementForStatement :: TypedName ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit)
- Hydra.Dsl.TypeScript.Syntax: forStatementTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: forStatementUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: forStatementWithBody :: TypedTerm ForStatement -> TypedTerm Statement -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementWithInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit) -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementWithTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: forStatementWithUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
- Hydra.Dsl.TypeScript.Syntax: functionDeclaration :: TypedTerm Identifier -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationFunctionDeclaration :: TypedName FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern]
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithComments :: TypedTerm FunctionDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsFunctionDeclarationWithComments :: TypedName FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsWithBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration -> TypedTerm FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithCommentsWithComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionDeclarationWithParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern] -> TypedTerm FunctionDeclaration
- Hydra.Dsl.TypeScript.Syntax: functionExpression :: TypedTerm (Maybe Identifier) -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionAsync :: TypedTerm FunctionExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionExpressionBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: functionExpressionFunctionExpression :: TypedName FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: functionExpressionId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.TypeScript.Syntax: functionExpressionParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern]
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithAsync :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier) -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionExpressionWithParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern] -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpression :: TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionFunctionTypeExpression :: TypedName FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression]
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter]
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionWithParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionWithReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: functionTypeExpressionWithTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter] -> TypedTerm FunctionTypeExpression
- Hydra.Dsl.TypeScript.Syntax: identifier :: TypedTerm String -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: identifierIdentifier :: TypedName Identifier
- Hydra.Dsl.TypeScript.Syntax: ifStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement)
- Hydra.Dsl.TypeScript.Syntax: ifStatementConsequent :: TypedTerm IfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: ifStatementIfStatement :: TypedName IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementTest :: TypedTerm IfStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: ifStatementWithAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementWithConsequent :: TypedTerm IfStatement -> TypedTerm Statement -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: ifStatementWithTest :: TypedTerm IfStatement -> TypedTerm Expression -> TypedTerm IfStatement
- Hydra.Dsl.TypeScript.Syntax: importClauseDefault :: TypedTerm ImportDefaultSpecifier -> TypedTerm ImportClause
- Hydra.Dsl.TypeScript.Syntax: importClauseImportClause :: TypedName ImportClause
- Hydra.Dsl.TypeScript.Syntax: importClauseNamed :: TypedTerm ImportSpecifier -> TypedTerm ImportClause
- Hydra.Dsl.TypeScript.Syntax: importClauseNamespace :: TypedTerm ImportNamespaceSpecifier -> TypedTerm ImportClause
- Hydra.Dsl.TypeScript.Syntax: importDeclaration :: TypedTerm [ImportClause] -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDeclarationImportDeclaration :: TypedName ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDeclarationSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: importDeclarationSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause]
- Hydra.Dsl.TypeScript.Syntax: importDeclarationWithSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDeclarationWithSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause] -> TypedTerm ImportDeclaration
- Hydra.Dsl.TypeScript.Syntax: importDefaultSpecifier :: TypedTerm Identifier -> TypedTerm ImportDefaultSpecifier
- Hydra.Dsl.TypeScript.Syntax: importDefaultSpecifierImportDefaultSpecifier :: TypedName ImportDefaultSpecifier
- Hydra.Dsl.TypeScript.Syntax: importNamespaceSpecifier :: TypedTerm Identifier -> TypedTerm ImportNamespaceSpecifier
- Hydra.Dsl.TypeScript.Syntax: importNamespaceSpecifierImportNamespaceSpecifier :: TypedName ImportNamespaceSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierImportSpecifier :: TypedName ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierWithImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: importSpecifierWithLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression]
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationInterfaceDeclaration :: TypedName InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature]
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter]
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: interfaceDeclarationWithTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter] -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.TypeScript.Syntax: labeledStatement :: TypedTerm Identifier -> TypedTerm Statement -> TypedTerm LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementBody :: TypedTerm LabeledStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: labeledStatementLabeledStatement :: TypedName LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementWithBody :: TypedTerm LabeledStatement -> TypedTerm Statement -> TypedTerm LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: labeledStatementWithLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier -> TypedTerm LabeledStatement
- Hydra.Dsl.TypeScript.Syntax: literalBigInt :: TypedTerm Integer -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalBoolean :: TypedTerm Bool -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalLiteral :: TypedName Literal
- Hydra.Dsl.TypeScript.Syntax: literalNull :: TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalNumber :: TypedTerm NumericLiteral -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalString :: TypedTerm StringLiteral -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalTemplate :: TypedTerm TemplateLiteral -> TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: literalUndefined :: TypedTerm Literal
- Hydra.Dsl.TypeScript.Syntax: memberExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionComputed :: TypedTerm MemberExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: memberExpressionMemberExpression :: TypedName MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionObject :: TypedTerm MemberExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionOptional :: TypedTerm MemberExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: memberExpressionProperty :: TypedTerm MemberExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithComputed :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithObject :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithOptional :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: memberExpressionWithProperty :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
- Hydra.Dsl.TypeScript.Syntax: methodDefinition :: TypedTerm Expression -> TypedTerm FunctionExpression -> TypedTerm MethodKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionComputed :: TypedTerm MethodDefinition -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionKey :: TypedTerm MethodDefinition -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionMethodDefinition :: TypedName MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionStatic :: TypedTerm MethodDefinition -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithComputed :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithKey :: TypedTerm MethodDefinition -> TypedTerm Expression -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithStatic :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodDefinitionWithValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression -> TypedTerm MethodDefinition
- Hydra.Dsl.TypeScript.Syntax: methodKindConstructor :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindGet :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindMethod :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindMethodKind :: TypedName MethodKind
- Hydra.Dsl.TypeScript.Syntax: methodKindSet :: TypedTerm MethodKind
- Hydra.Dsl.TypeScript.Syntax: moduleItemExport :: TypedTerm ExportDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemImport :: TypedTerm ImportDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemInterface :: TypedTerm InterfaceDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemModuleItem :: TypedName ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemStatement :: TypedTerm Statement -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemTypeAlias :: TypedTerm TypeAliasDeclaration -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithComments :: TypedTerm ModuleItem -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsModuleItemWithComments :: TypedName ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsWithBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem -> TypedTerm ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: moduleItemWithCommentsWithComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
- Hydra.Dsl.TypeScript.Syntax: namedExport :: TypedTerm [ExportSpecifier] -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
- Hydra.Dsl.TypeScript.Syntax: namedExportNamedExport :: TypedName NamedExport
- Hydra.Dsl.TypeScript.Syntax: namedExportSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral)
- Hydra.Dsl.TypeScript.Syntax: namedExportSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier]
- Hydra.Dsl.TypeScript.Syntax: namedExportWithSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
- Hydra.Dsl.TypeScript.Syntax: namedExportWithSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier] -> TypedTerm NamedExport
- Hydra.Dsl.TypeScript.Syntax: numericLiteralFloat :: TypedTerm Double -> TypedTerm NumericLiteral
- Hydra.Dsl.TypeScript.Syntax: numericLiteralInteger :: TypedTerm Int64 -> TypedTerm NumericLiteral
- Hydra.Dsl.TypeScript.Syntax: numericLiteralNumericLiteral :: TypedName NumericLiteral
- Hydra.Dsl.TypeScript.Syntax: objectPattern :: TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
- Hydra.Dsl.TypeScript.Syntax: objectPatternObjectPattern :: TypedName ObjectPattern
- Hydra.Dsl.TypeScript.Syntax: objectPatternProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty]
- Hydra.Dsl.TypeScript.Syntax: objectPatternPropertyObjectPatternProperty :: TypedName ObjectPatternProperty
- Hydra.Dsl.TypeScript.Syntax: objectPatternPropertyProperty :: TypedTerm Property -> TypedTerm ObjectPatternProperty
- Hydra.Dsl.TypeScript.Syntax: objectPatternPropertyRest :: TypedTerm RestElement -> TypedTerm ObjectPatternProperty
- Hydra.Dsl.TypeScript.Syntax: objectPatternWithProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpression :: TypedTerm TypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression]
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionParameterizedTypeExpression :: TypedName ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionWithArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: parameterizedTypeExpressionWithBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression -> TypedTerm ParameterizedTypeExpression
- Hydra.Dsl.TypeScript.Syntax: patternArray :: TypedTerm ArrayPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternAssignment :: TypedTerm AssignmentPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternIdentifier :: TypedTerm Identifier -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternObject :: TypedTerm ObjectPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternPattern :: TypedName Pattern
- Hydra.Dsl.TypeScript.Syntax: patternRest :: TypedTerm RestElement -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: patternTyped :: TypedTerm TypedPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: program :: TypedTerm [ModuleItem] -> TypedTerm SourceType -> TypedTerm Program
- Hydra.Dsl.TypeScript.Syntax: programBody :: TypedTerm Program -> TypedTerm [ModuleItem]
- Hydra.Dsl.TypeScript.Syntax: programProgram :: TypedName Program
- Hydra.Dsl.TypeScript.Syntax: programSourceType :: TypedTerm Program -> TypedTerm SourceType
- Hydra.Dsl.TypeScript.Syntax: programWithBody :: TypedTerm Program -> TypedTerm [ModuleItem] -> TypedTerm Program
- Hydra.Dsl.TypeScript.Syntax: programWithSourceType :: TypedTerm Program -> TypedTerm SourceType -> TypedTerm Program
- Hydra.Dsl.TypeScript.Syntax: property :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm PropertyKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyComputed :: TypedTerm Property -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertyKey :: TypedTerm Property -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: propertyKind :: TypedTerm Property -> TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindGet :: TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindInit :: TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindPropertyKind :: TypedName PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyKindSet :: TypedTerm PropertyKind
- Hydra.Dsl.TypeScript.Syntax: propertyProperty :: TypedName Property
- Hydra.Dsl.TypeScript.Syntax: propertyShorthand :: TypedTerm Property -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertySignature :: TypedTerm Identifier -> TypedTerm TypeExpression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: propertySignatureName :: TypedTerm PropertySignature -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: propertySignatureOptional :: TypedTerm PropertySignature -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertySignaturePropertySignature :: TypedName PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureReadonly :: TypedTerm PropertySignature -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: propertySignatureType :: TypedTerm PropertySignature -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithName :: TypedTerm PropertySignature -> TypedTerm Identifier -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithOptional :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithReadonly :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertySignatureWithType :: TypedTerm PropertySignature -> TypedTerm TypeExpression -> TypedTerm PropertySignature
- Hydra.Dsl.TypeScript.Syntax: propertyValue :: TypedTerm Property -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: propertyWithComputed :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithKey :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithKind :: TypedTerm Property -> TypedTerm PropertyKind -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithShorthand :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: propertyWithValue :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
- Hydra.Dsl.TypeScript.Syntax: restElement :: TypedTerm Pattern -> TypedTerm RestElement
- Hydra.Dsl.TypeScript.Syntax: restElementRestElement :: TypedName RestElement
- Hydra.Dsl.TypeScript.Syntax: sourceTypeModule :: TypedTerm SourceType
- Hydra.Dsl.TypeScript.Syntax: sourceTypeScript :: TypedTerm SourceType
- Hydra.Dsl.TypeScript.Syntax: sourceTypeSourceType :: TypedName SourceType
- Hydra.Dsl.TypeScript.Syntax: spreadElement :: TypedTerm Expression -> TypedTerm SpreadElement
- Hydra.Dsl.TypeScript.Syntax: spreadElementSpreadElement :: TypedName SpreadElement
- Hydra.Dsl.TypeScript.Syntax: statementBlock :: TypedTerm BlockStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementBreak :: TypedTerm BreakStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementClassDeclaration :: TypedTerm ClassDeclaration -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementContinue :: TypedTerm ContinueStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementDebugger :: TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementDoWhile :: TypedTerm DoWhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementEmpty :: TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementExpression :: TypedTerm Expression -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementFor :: TypedTerm ForStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementForIn :: TypedTerm ForInStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementForOf :: TypedTerm ForOfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementFunctionDeclaration :: TypedTerm FunctionDeclaration -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementIf :: TypedTerm IfStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementLabeled :: TypedTerm LabeledStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementReturn :: TypedTerm ReturnStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementStatement :: TypedName Statement
- Hydra.Dsl.TypeScript.Syntax: statementSwitch :: TypedTerm SwitchStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementThrow :: TypedTerm ThrowStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementTry :: TypedTerm TryStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementVariableDeclaration :: TypedTerm VariableDeclaration -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementWhile :: TypedTerm WhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementWithComments :: TypedTerm Statement -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsBody :: TypedTerm StatementWithComments -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment)
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsStatementWithComments :: TypedName StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsWithBody :: TypedTerm StatementWithComments -> TypedTerm Statement -> TypedTerm StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: statementWithCommentsWithComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
- Hydra.Dsl.TypeScript.Syntax: stringLiteral :: TypedTerm String -> TypedTerm Bool -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: stringLiteralSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: stringLiteralStringLiteral :: TypedName StringLiteral
- Hydra.Dsl.TypeScript.Syntax: stringLiteralValue :: TypedTerm StringLiteral -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: stringLiteralWithSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: stringLiteralWithValue :: TypedTerm StringLiteral -> TypedTerm String -> TypedTerm StringLiteral
- Hydra.Dsl.TypeScript.Syntax: switchCase :: TypedTerm (Maybe Expression) -> TypedTerm [Statement] -> TypedTerm SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchCaseConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement]
- Hydra.Dsl.TypeScript.Syntax: switchCaseSwitchCase :: TypedName SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchCaseTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: switchCaseWithConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement] -> TypedTerm SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchCaseWithTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression) -> TypedTerm SwitchCase
- Hydra.Dsl.TypeScript.Syntax: switchStatement :: TypedTerm Expression -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: switchStatementCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase]
- Hydra.Dsl.TypeScript.Syntax: switchStatementDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: switchStatementSwitchStatement :: TypedName SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: switchStatementWithCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: switchStatementWithDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression -> TypedTerm SwitchStatement
- Hydra.Dsl.TypeScript.Syntax: templateElement :: TypedTerm String -> TypedTerm Bool -> TypedTerm TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateElementTail :: TypedTerm TemplateElement -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: templateElementTemplateElement :: TypedName TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateElementValue :: TypedTerm TemplateElement -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: templateElementWithTail :: TypedTerm TemplateElement -> TypedTerm Bool -> TypedTerm TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateElementWithValue :: TypedTerm TemplateElement -> TypedTerm String -> TypedTerm TemplateElement
- Hydra.Dsl.TypeScript.Syntax: templateLiteral :: TypedTerm [TemplateElement] -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: templateLiteralExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression]
- Hydra.Dsl.TypeScript.Syntax: templateLiteralQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement]
- Hydra.Dsl.TypeScript.Syntax: templateLiteralTemplateLiteral :: TypedName TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: templateLiteralWithExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: templateLiteralWithQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement] -> TypedTerm TemplateLiteral
- Hydra.Dsl.TypeScript.Syntax: throwStatement :: TypedTerm Expression -> TypedTerm ThrowStatement
- Hydra.Dsl.TypeScript.Syntax: throwStatementThrowStatement :: TypedName ThrowStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatement :: TypedTerm BlockStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement)
- Hydra.Dsl.TypeScript.Syntax: tryStatementHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause)
- Hydra.Dsl.TypeScript.Syntax: tryStatementTryStatement :: TypedName TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementWithBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementWithFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: tryStatementWithHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm TryStatement
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationTypeAliasDeclaration :: TypedName TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter]
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationWithName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationWithType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAliasDeclarationWithTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter] -> TypedTerm TypeAliasDeclaration
- Hydra.Dsl.TypeScript.Syntax: typeAnnotation :: TypedTerm TypeExpression -> TypedTerm TypeAnnotation
- Hydra.Dsl.TypeScript.Syntax: typeAnnotationTypeAnnotation :: TypedName TypeAnnotation
- Hydra.Dsl.TypeScript.Syntax: typeExpressionAny :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionArray :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionFunction :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionIdentifier :: TypedTerm Identifier -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionIntersection :: TypedTerm IntersectionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionLiteral :: TypedTerm Literal -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionNever :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionObject :: TypedTerm ObjectTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionOptional :: TypedTerm TypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionParameterized :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionReadonly :: TypedTerm TypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionTuple :: TypedTerm TupleTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionTypeExpression :: TypedName TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionUnion :: TypedTerm UnionTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionUnknown :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeExpressionVoid :: TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typeParameter :: TypedTerm Identifier -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
- Hydra.Dsl.TypeScript.Syntax: typeParameterDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
- Hydra.Dsl.TypeScript.Syntax: typeParameterName :: TypedTerm TypeParameter -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: typeParameterTypeParameter :: TypedName TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterWithConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterWithDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typeParameterWithName :: TypedTerm TypeParameter -> TypedTerm Identifier -> TypedTerm TypeParameter
- Hydra.Dsl.TypeScript.Syntax: typedPattern :: TypedTerm Pattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternPattern :: TypedTerm TypedPattern -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternType :: TypedTerm TypedPattern -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: typedPatternTypedPattern :: TypedName TypedPattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternWithPattern :: TypedTerm TypedPattern -> TypedTerm Pattern -> TypedTerm TypedPattern
- Hydra.Dsl.TypeScript.Syntax: typedPatternWithType :: TypedTerm TypedPattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
- Hydra.Dsl.TypeScript.Syntax: unArrayTypeExpression :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: unIdentifier :: TypedTerm Identifier -> TypedTerm String
- Hydra.Dsl.TypeScript.Syntax: unImportDefaultSpecifier :: TypedTerm ImportDefaultSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: unImportNamespaceSpecifier :: TypedTerm ImportNamespaceSpecifier -> TypedTerm Identifier
- Hydra.Dsl.TypeScript.Syntax: unRestElement :: TypedTerm RestElement -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: unSpreadElement :: TypedTerm SpreadElement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: unThrowStatement :: TypedTerm ThrowStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: unTypeAnnotation :: TypedTerm TypeAnnotation -> TypedTerm TypeExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpression :: TypedTerm UnaryOperator -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionArgument :: TypedTerm UnaryExpression -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionUnaryExpression :: TypedName UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionWithArgument :: TypedTerm UnaryExpression -> TypedTerm Expression -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionWithOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryExpressionWithPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool -> TypedTerm UnaryExpression
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorBitwiseNot :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorDecrement :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorDelete :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorIncrement :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorNegate :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorNot :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorPlus :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorTypeof :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorUnaryOperator :: TypedName UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: unaryOperatorVoid :: TypedTerm UnaryOperator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaration :: TypedTerm VariableKind -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator]
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationVariableDeclaration :: TypedName VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationWithDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarationWithKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind -> TypedTerm VariableDeclaration
- Hydra.Dsl.TypeScript.Syntax: variableDeclarator :: TypedTerm Pattern -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorId :: TypedTerm VariableDeclarator -> TypedTerm Pattern
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression)
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorVariableDeclarator :: TypedName VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorWithId :: TypedTerm VariableDeclarator -> TypedTerm Pattern -> TypedTerm VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableDeclaratorWithInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
- Hydra.Dsl.TypeScript.Syntax: variableKindConst :: TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableKindLet :: TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableKindVar :: TypedTerm VariableKind
- Hydra.Dsl.TypeScript.Syntax: variableKindVariableKind :: TypedName VariableKind
- Hydra.Dsl.TypeScript.Syntax: whileStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm WhileStatement
- Hydra.Dsl.TypeScript.Syntax: whileStatementBody :: TypedTerm WhileStatement -> TypedTerm Statement
- Hydra.Dsl.TypeScript.Syntax: whileStatementTest :: TypedTerm WhileStatement -> TypedTerm Expression
- Hydra.Dsl.TypeScript.Syntax: whileStatementWhileStatement :: TypedName WhileStatement
- Hydra.Dsl.TypeScript.Syntax: whileStatementWithBody :: TypedTerm WhileStatement -> TypedTerm Statement -> TypedTerm WhileStatement
- Hydra.Dsl.TypeScript.Syntax: whileStatementWithTest :: TypedTerm WhileStatement -> TypedTerm Expression -> TypedTerm WhileStatement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: addExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: andExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: anyType :: TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayExpr :: [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayPattern :: [Maybe Pattern] -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayType :: TypeExpression -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowBlockExpr :: [String] -> [Statement] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowExpr :: [String] -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: assignExpr :: Pattern -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncArrowExpr :: [String] -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: awaitExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: bigIntLit :: Integer -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: blockComment :: String -> Comment
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: blockStmt :: [Statement] -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: boolExpr :: Bool -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: boolLit :: Bool -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: breakStmt :: Maybe String -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: callExpr :: Expression -> [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: catchClause :: Maybe Pattern -> [Statement] -> CatchClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: classDeclStmt :: ClassDeclaration -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: computedMemberExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: condExpr :: Expression -> Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: constDecl :: String -> Maybe Expression -> VariableDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: constructorDef :: [String] -> [Statement] -> MethodDefinition
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: continueStmt :: Maybe String -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: debuggerStmt :: Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultExportDecl :: Expression -> ExportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultPattern :: String -> Expression -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: divExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: docComment :: String -> [DocumentationTag] -> Comment
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: emptyStmt :: Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: eqExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: exportDeclStmt :: Statement -> ExportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: exportItem :: ExportDeclaration -> ModuleItem
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: exprStmt :: Expression -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: floatExpr :: Double -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: floatLit :: Double -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDeclStmt :: FunctionDeclaration -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: ident :: String -> Identifier
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: identExpr :: String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: identPattern :: String -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: identType :: String -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: ifStmt :: Expression -> Statement -> Maybe Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importDecl :: [ImportClause] -> String -> ImportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importDefault :: String -> ImportClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importItem :: ImportDeclaration -> ModuleItem
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamed :: String -> String -> ImportClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamespace :: String -> ImportClause
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: intExpr :: Int64 -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: intLit :: Int64 -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: letDecl :: String -> Maybe Expression -> VariableDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: lineComment :: String -> Comment
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: litExpr :: Literal -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: memberExpr :: Expression -> String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: methodDef :: String -> [String] -> [Statement] -> MethodDefinition
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: moduleProgram :: [ModuleItem] -> Program
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: mulExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: negateExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: neqExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: neverType :: TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: newExpr :: Expression -> [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: notExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: nullExpr :: Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: nullLit :: Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: objectExpr :: [(String, Expression)] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: objectPattern :: [Pattern] -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalCallExpr :: Expression -> [Expression] -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalMemberExpr :: Expression -> String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalType :: TypeExpression -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: orExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: paramType :: TypeExpression -> [TypeExpression] -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: parenExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: qualifiedName :: [String] -> QualifiedName
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: restPattern :: String -> Pattern
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: returnStmt :: Maybe Expression -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: returnsTag :: Maybe TypeExpression -> String -> DocumentationTag
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: scriptProgram :: [ModuleItem] -> Program
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: spreadExpr :: Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stmtItem :: Statement -> ModuleItem
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stringExpr :: String -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLit :: String -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLitSingle :: String -> Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: subExpr :: Expression -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: switchCase :: Maybe Expression -> [Statement] -> SwitchCase
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: switchStmt :: Expression -> [SwitchCase] -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: thisExpr :: Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: throwStmt :: Expression -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: typeTag :: TypeExpression -> DocumentationTag
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: unaryExpr :: UnaryOperator -> Expression -> Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedExpr :: Expression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedLit :: Literal
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: unionType :: [TypeExpression] -> TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: varDecl :: String -> Maybe Expression -> VariableDeclaration
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: varDeclStmt :: VariableDeclaration -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: voidType :: TypeExpression
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: whileStmt :: Expression -> Statement -> Statement
- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers: yieldExpr :: Maybe Expression -> Expression
- Hydra.TypeScript.Coder: analyzeTypeScriptFunction :: InferenceContext -> Graph -> Term -> Either t0 (FunctionStructure Graph)
- Hydra.TypeScript.Coder: collectForallParams :: Type -> [Name]
- Hydra.TypeScript.Coder: collectImports :: ModuleName -> Type -> Set Name
- Hydra.TypeScript.Coder: collectInnerTypeImports :: ModuleName -> Term -> Set Name
- Hydra.TypeScript.Coder: collectTermImports :: ModuleName -> Term -> Set Name
- Hydra.TypeScript.Coder: decimalDigitsAndScale :: String -> ((String, String), Int)
- Hydra.TypeScript.Coder: eagerFreeVariablesInTerm :: Term -> Set Name
- Hydra.TypeScript.Coder: encodeBindingAsStatement :: InferenceContext -> Graph -> ModuleName -> Binding -> Statement
- Hydra.TypeScript.Coder: encodeLazyCall :: InferenceContext -> Graph -> ModuleName -> Term -> [Term] -> [Bool] -> Expression
- Hydra.TypeScript.Coder: encodeLiteral :: Literal -> Expression
- Hydra.TypeScript.Coder: encodeLiteralType :: LiteralType -> TypeExpression
- Hydra.TypeScript.Coder: encodeParam :: t0 -> t1 -> ModuleName -> Name -> Type -> Pattern
- Hydra.TypeScript.Coder: encodeTerm :: InferenceContext -> Graph -> ModuleName -> Term -> Expression
- Hydra.TypeScript.Coder: encodeTermDefinition :: InferenceContext -> Graph -> ModuleName -> TermDefinition -> (Maybe String, ModuleItem)
- Hydra.TypeScript.Coder: encodeType :: t0 -> t1 -> ModuleName -> Type -> Either t2 TypeExpression
- Hydra.TypeScript.Coder: encodeTypeDefinition :: t0 -> Graph -> ModuleName -> TypeDefinition -> Either Error (Maybe String, ModuleItem)
- Hydra.TypeScript.Coder: encodeTypeOrAny :: t0 -> t1 -> ModuleName -> Type -> TypeExpression
- Hydra.TypeScript.Coder: filterNonLocalNames :: ModuleName -> Set Name -> Set Name
- Hydra.TypeScript.Coder: flattenApplication :: Term -> (Term, [Term])
- Hydra.TypeScript.Coder: forceLazyRefs :: Set Name -> Term -> Term
- Hydra.TypeScript.Coder: functionDeclarationFromTerm :: InferenceContext -> Graph -> ModuleName -> String -> Term -> Maybe Type -> FunctionDeclaration
- Hydra.TypeScript.Coder: importsToText :: Set String -> String -> ModuleName -> Set Name -> String
- Hydra.TypeScript.Coder: lazyFlagsForPrimitive :: Graph -> Name -> [Bool]
- Hydra.TypeScript.Coder: letBindingIsThunkCandidate :: Binding -> Bool
- Hydra.TypeScript.Coder: mkDocComment :: Maybe String -> Maybe DocumentationComment
- Hydra.TypeScript.Coder: moduleToTypeScript :: Set String -> Module -> [Definition] -> InferenceContext -> Graph -> Either Error (Map String String)
- Hydra.TypeScript.Coder: printInterfaceDeclaration :: InterfaceDeclaration -> String
- Hydra.TypeScript.Coder: printLiteral :: Literal -> String
- Hydra.TypeScript.Coder: printModuleItem :: ModuleItem -> String
- Hydra.TypeScript.Coder: printPropertySignature :: PropertySignature -> String
- Hydra.TypeScript.Coder: printTypeAliasDeclaration :: TypeAliasDeclaration -> String
- Hydra.TypeScript.Coder: printTypeExpression :: TypeExpression -> String
- Hydra.TypeScript.Coder: printTypeParameter :: TypeParameter -> String
- Hydra.TypeScript.Coder: printTypeParameterList :: [TypeParameter] -> String
- Hydra.TypeScript.Coder: sanitizeParamName :: Name -> String
- Hydra.TypeScript.Coder: sortBindingsTopologically :: [Binding] -> [Binding]
- Hydra.TypeScript.Coder: sortTermDefsTopologically :: t0 -> [TermDefinition] -> [TermDefinition]
- Hydra.TypeScript.Coder: stripForalls :: Type -> Type
- Hydra.TypeScript.Coder: termHeadVariable :: Term -> Maybe Name
- Hydra.TypeScript.Coder: thunkLazyBindings :: [Binding] -> Term -> ([Binding], Term)
- Hydra.TypeScript.Coder: thunkLazyLet :: Let -> Let
- Hydra.TypeScript.Coder: tsArray :: [Expression] -> Expression
- Hydra.TypeScript.Coder: tsArrow :: [String] -> Expression -> Expression
- Hydra.TypeScript.Coder: tsArrowTyped :: [Pattern] -> Expression -> Expression
- Hydra.TypeScript.Coder: tsAsAny :: Expression -> Expression
- Hydra.TypeScript.Coder: tsCall :: Expression -> [Expression] -> Expression
- Hydra.TypeScript.Coder: tsCond :: Expression -> Expression -> Expression -> Expression
- Hydra.TypeScript.Coder: tsDocEntityRef :: EntityReference -> String
- Hydra.TypeScript.Coder: tsEnvGetGraph :: t0 -> t0
- Hydra.TypeScript.Coder: tsEnvSetGraph :: t0 -> t1 -> t0
- Hydra.TypeScript.Coder: tsEscapeString :: String -> String
- Hydra.TypeScript.Coder: tsExprIdent :: String -> Expression
- Hydra.TypeScript.Coder: tsExprStr :: String -> Expression
- Hydra.TypeScript.Coder: tsIdent :: String -> Identifier
- Hydra.TypeScript.Coder: tsMember :: Expression -> String -> Expression
- Hydra.TypeScript.Coder: tsNamedType :: String -> TypeExpression
- Hydra.TypeScript.Coder: tsNew :: Expression -> [Expression] -> Expression
- Hydra.TypeScript.Coder: tsObject :: [(String, Expression)] -> Expression
- Hydra.TypeScript.Coder: tsParam :: String -> TypeParameter
- Hydra.TypeScript.Coder: tsParamApp1 :: String -> TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsParamApp2 :: String -> TypeExpression -> TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsParen :: Expression -> Expression
- Hydra.TypeScript.Coder: tsPropSig :: String -> Bool -> TypeExpression -> PropertySignature
- Hydra.TypeScript.Coder: tsPropSigWithDoc :: String -> Bool -> TypeExpression -> Maybe DocumentationComment -> PropertySignature
- Hydra.TypeScript.Coder: tsReadonlyMap :: TypeExpression -> TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsReadonlySet :: TypeExpression -> TypeExpression
- Hydra.TypeScript.Coder: tsTuple :: [TypeExpression] -> TypeExpression
- Hydra.TypeScript.Coder: tsTypedIdent :: String -> TypeExpression -> Pattern
- Hydra.TypeScript.Coder: tsUndefined :: Expression
- Hydra.TypeScript.Language: typeScriptLanguage :: Language
- Hydra.TypeScript.Language: typeScriptReservedWords :: Set String
- Hydra.TypeScript.Operators: addOp :: Op
- Hydra.TypeScript.Operators: appOp :: Op
- Hydra.TypeScript.Operators: arrowOp :: Op
- Hydra.TypeScript.Operators: assignOp :: Op
- Hydra.TypeScript.Operators: bitwiseAndOp :: Op
- Hydra.TypeScript.Operators: bitwiseOrOp :: Op
- Hydra.TypeScript.Operators: bitwiseXorOp :: Op
- Hydra.TypeScript.Operators: colonOp :: Op
- Hydra.TypeScript.Operators: commaOp :: Op
- Hydra.TypeScript.Operators: defineOp :: Op
- Hydra.TypeScript.Operators: divideOp :: Op
- Hydra.TypeScript.Operators: equalOp :: Op
- Hydra.TypeScript.Operators: exponentiateOp :: Op
- Hydra.TypeScript.Operators: greaterThanOp :: Op
- Hydra.TypeScript.Operators: greaterThanOrEqualOp :: Op
- Hydra.TypeScript.Operators: inOp :: Op
- Hydra.TypeScript.Operators: instanceOfOp :: Op
- Hydra.TypeScript.Operators: leftShiftOp :: Op
- Hydra.TypeScript.Operators: lessThanOp :: Op
- Hydra.TypeScript.Operators: lessThanOrEqualOp :: Op
- Hydra.TypeScript.Operators: logicalAndOp :: Op
- Hydra.TypeScript.Operators: logicalOrOp :: Op
- Hydra.TypeScript.Operators: memberOp :: Op
- Hydra.TypeScript.Operators: moduloOp :: Op
- Hydra.TypeScript.Operators: multiplyOp :: Op
- Hydra.TypeScript.Operators: notEqualOp :: Op
- Hydra.TypeScript.Operators: nullishCoalescingOp :: Op
- Hydra.TypeScript.Operators: optionalChainOp :: Op
- Hydra.TypeScript.Operators: rightShiftOp :: Op
- Hydra.TypeScript.Operators: strictEqualOp :: Op
- Hydra.TypeScript.Operators: strictNotEqualOp :: Op
- Hydra.TypeScript.Operators: subtractOp :: Op
- Hydra.TypeScript.Operators: ternaryOp :: Op
- Hydra.TypeScript.Operators: unsignedRightShiftOp :: Op
- Hydra.TypeScript.Serde: allDigits :: [Int] -> Bool
- Hydra.TypeScript.Serde: arrayElementToExpr :: ArrayElement -> Expr
- Hydra.TypeScript.Serde: arrayExpressionToExpr :: [ArrayElement] -> Expr
- Hydra.TypeScript.Serde: arrayPatternToExpr :: [Maybe Pattern] -> Expr
- Hydra.TypeScript.Serde: arrowFunctionExpressionToExpr :: ArrowFunctionExpression -> Expr
- Hydra.TypeScript.Serde: assignmentExpressionToExpr :: AssignmentExpression -> Expr
- Hydra.TypeScript.Serde: assignmentOperatorToString :: AssignmentOperator -> String
- Hydra.TypeScript.Serde: assignmentPatternToExpr :: AssignmentPattern -> Expr
- Hydra.TypeScript.Serde: binaryExpressionToExpr :: BinaryExpression -> Expr
- Hydra.TypeScript.Serde: binaryOperatorToExpr :: BinaryOperator -> Op
- Hydra.TypeScript.Serde: blockStatementToExpr :: [Statement] -> Expr
- Hydra.TypeScript.Serde: breakStatementToExpr :: Maybe Identifier -> Expr
- Hydra.TypeScript.Serde: callExpressionToExpr :: CallExpression -> Expr
- Hydra.TypeScript.Serde: catchClauseToExpr :: CatchClause -> Expr
- Hydra.TypeScript.Serde: classDeclarationToExpr :: ClassDeclaration -> Expr
- Hydra.TypeScript.Serde: classDeclarationWithCommentsToExpr :: ClassDeclarationWithComments -> Expr
- Hydra.TypeScript.Serde: conditionalExpressionToExpr :: ConditionalExpression -> Expr
- Hydra.TypeScript.Serde: continueStatementToExpr :: Maybe Identifier -> Expr
- Hydra.TypeScript.Serde: doWhileStatementToExpr :: DoWhileStatement -> Expr
- Hydra.TypeScript.Serde: documentationCommentToExpr :: DocumentationComment -> Expr
- Hydra.TypeScript.Serde: documentationTagToLine :: DocumentationTag -> String
- Hydra.TypeScript.Serde: escapeString :: String -> Bool -> String
- Hydra.TypeScript.Serde: exportAllToExpr :: ExportAllDeclaration -> Expr
- Hydra.TypeScript.Serde: exportDeclarationToExpr :: ExportDeclaration -> Expr
- Hydra.TypeScript.Serde: exportSpecifierToExpr :: ExportSpecifier -> Expr
- Hydra.TypeScript.Serde: expressionToExpr :: Expression -> Expr
- Hydra.TypeScript.Serde: forInStatementToExpr :: ForInStatement -> Expr
- Hydra.TypeScript.Serde: forOfStatementToExpr :: ForOfStatement -> Expr
- Hydra.TypeScript.Serde: forStatementToExpr :: ForStatement -> Expr
- Hydra.TypeScript.Serde: formatImportSpecifiers :: [Expr] -> Expr
- Hydra.TypeScript.Serde: functionDeclarationToExpr :: FunctionDeclaration -> Expr
- Hydra.TypeScript.Serde: functionDeclarationWithCommentsToExpr :: FunctionDeclarationWithComments -> Expr
- Hydra.TypeScript.Serde: functionExpressionToExpr :: FunctionExpression -> Expr
- Hydra.TypeScript.Serde: identifierToExpr :: Identifier -> Expr
- Hydra.TypeScript.Serde: ifStatementToExpr :: IfStatement -> Expr
- Hydra.TypeScript.Serde: importDeclarationToExpr :: ImportDeclaration -> Expr
- Hydra.TypeScript.Serde: importSpecifierToExpr :: ImportClause -> Expr
- Hydra.TypeScript.Serde: isKernelTypeVarName :: String -> Bool
- Hydra.TypeScript.Serde: labeledStatementToExpr :: LabeledStatement -> Expr
- Hydra.TypeScript.Serde: literalToExpr :: Literal -> Expr
- Hydra.TypeScript.Serde: memberExpressionToExpr :: MemberExpression -> Expr
- Hydra.TypeScript.Serde: methodDefinitionToExpr :: MethodDefinition -> Expr
- Hydra.TypeScript.Serde: moduleItemToExpr :: ModuleItem -> Expr
- Hydra.TypeScript.Serde: moduleItemWithCommentsToExpr :: ModuleItemWithComments -> Expr
- Hydra.TypeScript.Serde: namedExportToExpr :: NamedExport -> Expr
- Hydra.TypeScript.Serde: numericLiteralToExpr :: NumericLiteral -> Expr
- Hydra.TypeScript.Serde: objectExpressionToExpr :: [Property] -> Expr
- Hydra.TypeScript.Serde: objectPatternPropertyToExpr :: ObjectPatternProperty -> Expr
- Hydra.TypeScript.Serde: objectPatternToExpr :: ObjectPattern -> Expr
- Hydra.TypeScript.Serde: patternToExpr :: Pattern -> Expr
- Hydra.TypeScript.Serde: patternToString :: Pattern -> String
- Hydra.TypeScript.Serde: programToExpr :: Program -> Expr
- Hydra.TypeScript.Serde: propertyToExpr :: Property -> Expr
- Hydra.TypeScript.Serde: returnStatementToExpr :: Maybe Expression -> Expr
- Hydra.TypeScript.Serde: statementToExpr :: Statement -> Expr
- Hydra.TypeScript.Serde: stringLiteralToExpr :: StringLiteral -> Expr
- Hydra.TypeScript.Serde: switchCaseToExpr :: SwitchCase -> Expr
- Hydra.TypeScript.Serde: switchStatementToExpr :: SwitchStatement -> Expr
- Hydra.TypeScript.Serde: templateLiteralToExpr :: TemplateLiteral -> Expr
- Hydra.TypeScript.Serde: throwStatementToExpr :: ThrowStatement -> Expr
- Hydra.TypeScript.Serde: toLineComment :: String -> String
- Hydra.TypeScript.Serde: toTypeScriptComments :: String -> [DocumentationTag] -> String
- Hydra.TypeScript.Serde: tryStatementToExpr :: TryStatement -> Expr
- Hydra.TypeScript.Serde: tsTypeExpressionToString :: TypeExpression -> String
- Hydra.TypeScript.Serde: typeExpressionToString :: TypeExpression -> String
- Hydra.TypeScript.Serde: typedPatternToExpr :: TypedPattern -> Expr
- Hydra.TypeScript.Serde: unaryExpressionToExpr :: UnaryExpression -> Expr
- Hydra.TypeScript.Serde: unaryOperatorToString :: UnaryOperator -> String
- Hydra.TypeScript.Serde: variableDeclarationToExpr :: VariableDeclaration -> Expr
- Hydra.TypeScript.Serde: variableDeclaratorToExpr :: VariableDeclarator -> Expr
- Hydra.TypeScript.Serde: variableKindToExpr :: VariableKind -> Expr
- Hydra.TypeScript.Serde: whileStatementToExpr :: WhileStatement -> Expr
- Hydra.TypeScript.Syntax: ArrayElementExpression :: Expression -> ArrayElement
- Hydra.TypeScript.Syntax: ArrayElementHole :: ArrayElement
- Hydra.TypeScript.Syntax: ArrayElementSpread :: SpreadElement -> ArrayElement
- Hydra.TypeScript.Syntax: ArrayTypeExpression :: TypeExpression -> ArrayTypeExpression
- Hydra.TypeScript.Syntax: ArrowFunctionBodyBlock :: BlockStatement -> ArrowFunctionBody
- Hydra.TypeScript.Syntax: ArrowFunctionBodyExpression :: Expression -> ArrowFunctionBody
- Hydra.TypeScript.Syntax: ArrowFunctionExpression :: [Pattern] -> ArrowFunctionBody -> Bool -> ArrowFunctionExpression
- Hydra.TypeScript.Syntax: AsExpression :: Expression -> TypeExpression -> AsExpression
- Hydra.TypeScript.Syntax: AssignmentExpression :: AssignmentOperator -> Pattern -> Expression -> AssignmentExpression
- Hydra.TypeScript.Syntax: AssignmentOperatorAddAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorAndAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorBitwiseAndAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorBitwiseOrAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorBitwiseXorAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorDivideAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorExponentiateAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorLeftShiftAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorModuloAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorMultiplyAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorNullishAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorOrAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorRightShiftAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorSubtractAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentOperatorUnsignedRightShiftAssign :: AssignmentOperator
- Hydra.TypeScript.Syntax: AssignmentPattern :: Pattern -> Expression -> AssignmentPattern
- Hydra.TypeScript.Syntax: BinaryExpression :: BinaryOperator -> Expression -> Expression -> BinaryExpression
- Hydra.TypeScript.Syntax: BinaryOperatorAdd :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorAnd :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorBitwiseAnd :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorBitwiseOr :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorBitwiseXor :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorDivide :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorExponentiate :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorGreaterThan :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorGreaterThanOrEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorIn :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorInstanceof :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorLeftShift :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorLessThan :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorLessThanOrEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorModulo :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorMultiply :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorNotEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorNullishCoalescing :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorOr :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorRightShift :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorStrictEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorStrictNotEqual :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorSubtract :: BinaryOperator
- Hydra.TypeScript.Syntax: BinaryOperatorUnsignedRightShift :: BinaryOperator
- Hydra.TypeScript.Syntax: CallExpression :: Expression -> [Expression] -> Bool -> CallExpression
- Hydra.TypeScript.Syntax: CatchClause :: Maybe Pattern -> BlockStatement -> CatchClause
- Hydra.TypeScript.Syntax: ClassDeclaration :: Identifier -> Maybe Expression -> ClassBody -> ClassDeclaration
- Hydra.TypeScript.Syntax: ClassDeclarationWithComments :: ClassDeclaration -> Maybe DocumentationComment -> ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: CommentBlock :: String -> Comment
- Hydra.TypeScript.Syntax: CommentDocumentation :: DocumentationComment -> Comment
- Hydra.TypeScript.Syntax: CommentLine :: String -> Comment
- Hydra.TypeScript.Syntax: ConditionalExpression :: Expression -> Expression -> Expression -> ConditionalExpression
- Hydra.TypeScript.Syntax: DoWhileStatement :: Statement -> Expression -> DoWhileStatement
- Hydra.TypeScript.Syntax: DocumentationComment :: String -> [DocumentationTag] -> DocumentationComment
- Hydra.TypeScript.Syntax: DocumentationTag :: String -> Maybe TypeExpression -> Maybe Identifier -> String -> DocumentationTag
- Hydra.TypeScript.Syntax: ExportAllDeclaration :: Maybe Identifier -> StringLiteral -> ExportAllDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationAll :: ExportAllDeclaration -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationDeclaration :: Statement -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationDefault :: Expression -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportDeclarationNamed :: NamedExport -> ExportDeclaration
- Hydra.TypeScript.Syntax: ExportSpecifier :: Identifier -> Identifier -> ExportSpecifier
- Hydra.TypeScript.Syntax: ExpressionArray :: ArrayExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionArrow :: ArrowFunctionExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionAsExpression :: AsExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionAssignment :: AssignmentExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionAwait :: Expression -> Expression
- Hydra.TypeScript.Syntax: ExpressionBinary :: BinaryExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionCall :: CallExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionConditional :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionFunction :: FunctionExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionIdentifier :: Identifier -> Expression
- Hydra.TypeScript.Syntax: ExpressionLiteral :: Literal -> Expression
- Hydra.TypeScript.Syntax: ExpressionMember :: MemberExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionNew :: CallExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionObject :: ObjectExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionParenthesized :: Expression -> Expression
- Hydra.TypeScript.Syntax: ExpressionSequence :: [Expression] -> Expression
- Hydra.TypeScript.Syntax: ExpressionSpread :: SpreadElement -> Expression
- Hydra.TypeScript.Syntax: ExpressionThis :: Expression
- Hydra.TypeScript.Syntax: ExpressionUnary :: UnaryExpression -> Expression
- Hydra.TypeScript.Syntax: ExpressionYield :: Maybe Expression -> Expression
- Hydra.TypeScript.Syntax: ForInLeftPattern :: Pattern -> ForInLeft
- Hydra.TypeScript.Syntax: ForInLeftVariable :: VariableDeclaration -> ForInLeft
- Hydra.TypeScript.Syntax: ForInStatement :: ForInLeft -> Expression -> Statement -> ForInStatement
- Hydra.TypeScript.Syntax: ForInitExpression :: Expression -> ForInit
- Hydra.TypeScript.Syntax: ForInitVariable :: VariableDeclaration -> ForInit
- Hydra.TypeScript.Syntax: ForOfStatement :: Bool -> ForInLeft -> Expression -> Statement -> ForOfStatement
- Hydra.TypeScript.Syntax: ForStatement :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> ForStatement
- Hydra.TypeScript.Syntax: FunctionDeclaration :: Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionDeclaration
- Hydra.TypeScript.Syntax: FunctionDeclarationWithComments :: FunctionDeclaration -> Maybe DocumentationComment -> FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: FunctionExpression :: Maybe Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionExpression
- Hydra.TypeScript.Syntax: FunctionTypeExpression :: [TypeParameter] -> [TypeExpression] -> TypeExpression -> FunctionTypeExpression
- Hydra.TypeScript.Syntax: Identifier :: String -> Identifier
- Hydra.TypeScript.Syntax: IfStatement :: Expression -> Statement -> Maybe Statement -> IfStatement
- Hydra.TypeScript.Syntax: ImportClauseDefault :: ImportDefaultSpecifier -> ImportClause
- Hydra.TypeScript.Syntax: ImportClauseNamed :: ImportSpecifier -> ImportClause
- Hydra.TypeScript.Syntax: ImportClauseNamespace :: ImportNamespaceSpecifier -> ImportClause
- Hydra.TypeScript.Syntax: ImportDeclaration :: [ImportClause] -> StringLiteral -> ImportDeclaration
- Hydra.TypeScript.Syntax: ImportDefaultSpecifier :: Identifier -> ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: ImportNamespaceSpecifier :: Identifier -> ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: ImportSpecifier :: Identifier -> Identifier -> ImportSpecifier
- Hydra.TypeScript.Syntax: InterfaceDeclaration :: Identifier -> [TypeParameter] -> [TypeExpression] -> [PropertySignature] -> InterfaceDeclaration
- Hydra.TypeScript.Syntax: LabeledStatement :: Identifier -> Statement -> LabeledStatement
- Hydra.TypeScript.Syntax: LiteralBigInt :: Integer -> Literal
- Hydra.TypeScript.Syntax: LiteralBoolean :: Bool -> Literal
- Hydra.TypeScript.Syntax: LiteralNull :: Literal
- Hydra.TypeScript.Syntax: LiteralNumber :: NumericLiteral -> Literal
- Hydra.TypeScript.Syntax: LiteralString :: StringLiteral -> Literal
- Hydra.TypeScript.Syntax: LiteralTemplate :: TemplateLiteral -> Literal
- Hydra.TypeScript.Syntax: LiteralUndefined :: Literal
- Hydra.TypeScript.Syntax: MemberExpression :: Expression -> Expression -> Bool -> Bool -> MemberExpression
- Hydra.TypeScript.Syntax: MethodDefinition :: Expression -> FunctionExpression -> MethodKind -> Bool -> Bool -> MethodDefinition
- Hydra.TypeScript.Syntax: MethodKindConstructor :: MethodKind
- Hydra.TypeScript.Syntax: MethodKindGet :: MethodKind
- Hydra.TypeScript.Syntax: MethodKindMethod :: MethodKind
- Hydra.TypeScript.Syntax: MethodKindSet :: MethodKind
- Hydra.TypeScript.Syntax: ModuleItemExport :: ExportDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemImport :: ImportDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemInterface :: InterfaceDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemStatement :: Statement -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemTypeAlias :: TypeAliasDeclaration -> ModuleItem
- Hydra.TypeScript.Syntax: ModuleItemWithComments :: ModuleItem -> Maybe DocumentationComment -> ModuleItemWithComments
- Hydra.TypeScript.Syntax: NamedExport :: [ExportSpecifier] -> Maybe StringLiteral -> NamedExport
- Hydra.TypeScript.Syntax: NumericLiteralFloat :: Double -> NumericLiteral
- Hydra.TypeScript.Syntax: NumericLiteralInteger :: Int64 -> NumericLiteral
- Hydra.TypeScript.Syntax: ObjectPattern :: [ObjectPatternProperty] -> ObjectPattern
- Hydra.TypeScript.Syntax: ObjectPatternPropertyProperty :: Property -> ObjectPatternProperty
- Hydra.TypeScript.Syntax: ObjectPatternPropertyRest :: RestElement -> ObjectPatternProperty
- Hydra.TypeScript.Syntax: ParameterizedTypeExpression :: TypeExpression -> [TypeExpression] -> ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: PatternArray :: ArrayPattern -> Pattern
- Hydra.TypeScript.Syntax: PatternAssignment :: AssignmentPattern -> Pattern
- Hydra.TypeScript.Syntax: PatternIdentifier :: Identifier -> Pattern
- Hydra.TypeScript.Syntax: PatternObject :: ObjectPattern -> Pattern
- Hydra.TypeScript.Syntax: PatternRest :: RestElement -> Pattern
- Hydra.TypeScript.Syntax: PatternTyped :: TypedPattern -> Pattern
- Hydra.TypeScript.Syntax: Program :: [ModuleItem] -> SourceType -> Program
- Hydra.TypeScript.Syntax: Property :: Expression -> Expression -> PropertyKind -> Bool -> Bool -> Property
- Hydra.TypeScript.Syntax: PropertyKindGet :: PropertyKind
- Hydra.TypeScript.Syntax: PropertyKindInit :: PropertyKind
- Hydra.TypeScript.Syntax: PropertyKindSet :: PropertyKind
- Hydra.TypeScript.Syntax: PropertySignature :: Identifier -> TypeExpression -> Bool -> Bool -> Maybe DocumentationComment -> PropertySignature
- Hydra.TypeScript.Syntax: RestElement :: Pattern -> RestElement
- Hydra.TypeScript.Syntax: SourceTypeModule :: SourceType
- Hydra.TypeScript.Syntax: SourceTypeScript :: SourceType
- Hydra.TypeScript.Syntax: SpreadElement :: Expression -> SpreadElement
- Hydra.TypeScript.Syntax: StatementBlock :: BlockStatement -> Statement
- Hydra.TypeScript.Syntax: StatementBreak :: BreakStatement -> Statement
- Hydra.TypeScript.Syntax: StatementClassDeclaration :: ClassDeclaration -> Statement
- Hydra.TypeScript.Syntax: StatementContinue :: ContinueStatement -> Statement
- Hydra.TypeScript.Syntax: StatementDebugger :: Statement
- Hydra.TypeScript.Syntax: StatementDoWhile :: DoWhileStatement -> Statement
- Hydra.TypeScript.Syntax: StatementEmpty :: Statement
- Hydra.TypeScript.Syntax: StatementExpression :: Expression -> Statement
- Hydra.TypeScript.Syntax: StatementFor :: ForStatement -> Statement
- Hydra.TypeScript.Syntax: StatementForIn :: ForInStatement -> Statement
- Hydra.TypeScript.Syntax: StatementForOf :: ForOfStatement -> Statement
- Hydra.TypeScript.Syntax: StatementFunctionDeclaration :: FunctionDeclaration -> Statement
- Hydra.TypeScript.Syntax: StatementIf :: IfStatement -> Statement
- Hydra.TypeScript.Syntax: StatementLabeled :: LabeledStatement -> Statement
- Hydra.TypeScript.Syntax: StatementReturn :: ReturnStatement -> Statement
- Hydra.TypeScript.Syntax: StatementSwitch :: SwitchStatement -> Statement
- Hydra.TypeScript.Syntax: StatementThrow :: ThrowStatement -> Statement
- Hydra.TypeScript.Syntax: StatementTry :: TryStatement -> Statement
- Hydra.TypeScript.Syntax: StatementVariableDeclaration :: VariableDeclaration -> Statement
- Hydra.TypeScript.Syntax: StatementWhile :: WhileStatement -> Statement
- Hydra.TypeScript.Syntax: StatementWithComments :: Statement -> Maybe DocumentationComment -> StatementWithComments
- Hydra.TypeScript.Syntax: StringLiteral :: String -> Bool -> StringLiteral
- Hydra.TypeScript.Syntax: SwitchCase :: Maybe Expression -> [Statement] -> SwitchCase
- Hydra.TypeScript.Syntax: SwitchStatement :: Expression -> [SwitchCase] -> SwitchStatement
- Hydra.TypeScript.Syntax: TemplateElement :: String -> Bool -> TemplateElement
- Hydra.TypeScript.Syntax: TemplateLiteral :: [TemplateElement] -> [Expression] -> TemplateLiteral
- Hydra.TypeScript.Syntax: ThrowStatement :: Expression -> ThrowStatement
- Hydra.TypeScript.Syntax: TryStatement :: BlockStatement -> Maybe CatchClause -> Maybe BlockStatement -> TryStatement
- Hydra.TypeScript.Syntax: TypeAliasDeclaration :: Identifier -> [TypeParameter] -> TypeExpression -> TypeAliasDeclaration
- Hydra.TypeScript.Syntax: TypeAnnotation :: TypeExpression -> TypeAnnotation
- Hydra.TypeScript.Syntax: TypeExpressionAny :: TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionArray :: ArrayTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionFunction :: FunctionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionIdentifier :: Identifier -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionIntersection :: IntersectionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionLiteral :: Literal -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionNever :: TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionObject :: ObjectTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionOptional :: TypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionParameterized :: ParameterizedTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionReadonly :: TypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionTuple :: TupleTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionUnion :: UnionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionUnknown :: TypeExpression
- Hydra.TypeScript.Syntax: TypeExpressionVoid :: TypeExpression
- Hydra.TypeScript.Syntax: TypeParameter :: Identifier -> Maybe TypeExpression -> Maybe TypeExpression -> TypeParameter
- Hydra.TypeScript.Syntax: TypedPattern :: Pattern -> TypeExpression -> TypedPattern
- Hydra.TypeScript.Syntax: UnaryExpression :: UnaryOperator -> Expression -> Bool -> UnaryExpression
- Hydra.TypeScript.Syntax: UnaryOperatorBitwiseNot :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorDecrement :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorDelete :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorIncrement :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorNegate :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorNot :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorPlus :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorTypeof :: UnaryOperator
- Hydra.TypeScript.Syntax: UnaryOperatorVoid :: UnaryOperator
- Hydra.TypeScript.Syntax: VariableDeclaration :: VariableKind -> [VariableDeclarator] -> VariableDeclaration
- Hydra.TypeScript.Syntax: VariableDeclarator :: Pattern -> Maybe Expression -> VariableDeclarator
- Hydra.TypeScript.Syntax: VariableKindConst :: VariableKind
- Hydra.TypeScript.Syntax: VariableKindLet :: VariableKind
- Hydra.TypeScript.Syntax: VariableKindVar :: VariableKind
- Hydra.TypeScript.Syntax: WhileStatement :: Expression -> Statement -> WhileStatement
- Hydra.TypeScript.Syntax: [arrowFunctionExpressionAsync] :: ArrowFunctionExpression -> Bool
- Hydra.TypeScript.Syntax: [arrowFunctionExpressionBody] :: ArrowFunctionExpression -> ArrowFunctionBody
- Hydra.TypeScript.Syntax: [arrowFunctionExpressionParams] :: ArrowFunctionExpression -> [Pattern]
- Hydra.TypeScript.Syntax: [asExpressionExpression] :: AsExpression -> Expression
- Hydra.TypeScript.Syntax: [asExpressionType] :: AsExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [assignmentExpressionLeft] :: AssignmentExpression -> Pattern
- Hydra.TypeScript.Syntax: [assignmentExpressionOperator] :: AssignmentExpression -> AssignmentOperator
- Hydra.TypeScript.Syntax: [assignmentExpressionRight] :: AssignmentExpression -> Expression
- Hydra.TypeScript.Syntax: [assignmentPatternLeft] :: AssignmentPattern -> Pattern
- Hydra.TypeScript.Syntax: [assignmentPatternRight] :: AssignmentPattern -> Expression
- Hydra.TypeScript.Syntax: [binaryExpressionLeft] :: BinaryExpression -> Expression
- Hydra.TypeScript.Syntax: [binaryExpressionOperator] :: BinaryExpression -> BinaryOperator
- Hydra.TypeScript.Syntax: [binaryExpressionRight] :: BinaryExpression -> Expression
- Hydra.TypeScript.Syntax: [callExpressionArguments] :: CallExpression -> [Expression]
- Hydra.TypeScript.Syntax: [callExpressionCallee] :: CallExpression -> Expression
- Hydra.TypeScript.Syntax: [callExpressionOptional] :: CallExpression -> Bool
- Hydra.TypeScript.Syntax: [catchClauseBody] :: CatchClause -> BlockStatement
- Hydra.TypeScript.Syntax: [catchClauseParam] :: CatchClause -> Maybe Pattern
- Hydra.TypeScript.Syntax: [classDeclarationBody] :: ClassDeclaration -> ClassBody
- Hydra.TypeScript.Syntax: [classDeclarationId] :: ClassDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [classDeclarationSuperClass] :: ClassDeclaration -> Maybe Expression
- Hydra.TypeScript.Syntax: [classDeclarationWithCommentsBody] :: ClassDeclarationWithComments -> ClassDeclaration
- Hydra.TypeScript.Syntax: [classDeclarationWithCommentsComments] :: ClassDeclarationWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [conditionalExpressionAlternate] :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: [conditionalExpressionConsequent] :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: [conditionalExpressionTest] :: ConditionalExpression -> Expression
- Hydra.TypeScript.Syntax: [doWhileStatementBody] :: DoWhileStatement -> Statement
- Hydra.TypeScript.Syntax: [doWhileStatementTest] :: DoWhileStatement -> Expression
- Hydra.TypeScript.Syntax: [documentationCommentDescription] :: DocumentationComment -> String
- Hydra.TypeScript.Syntax: [documentationCommentTags] :: DocumentationComment -> [DocumentationTag]
- Hydra.TypeScript.Syntax: [documentationTagDescription] :: DocumentationTag -> String
- Hydra.TypeScript.Syntax: [documentationTagName] :: DocumentationTag -> String
- Hydra.TypeScript.Syntax: [documentationTagParamName] :: DocumentationTag -> Maybe Identifier
- Hydra.TypeScript.Syntax: [documentationTagType] :: DocumentationTag -> Maybe TypeExpression
- Hydra.TypeScript.Syntax: [exportAllDeclarationExported] :: ExportAllDeclaration -> Maybe Identifier
- Hydra.TypeScript.Syntax: [exportAllDeclarationSource] :: ExportAllDeclaration -> StringLiteral
- Hydra.TypeScript.Syntax: [exportSpecifierExported] :: ExportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [exportSpecifierLocal] :: ExportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [forInStatementBody] :: ForInStatement -> Statement
- Hydra.TypeScript.Syntax: [forInStatementLeft] :: ForInStatement -> ForInLeft
- Hydra.TypeScript.Syntax: [forInStatementRight] :: ForInStatement -> Expression
- Hydra.TypeScript.Syntax: [forOfStatementAwait] :: ForOfStatement -> Bool
- Hydra.TypeScript.Syntax: [forOfStatementBody] :: ForOfStatement -> Statement
- Hydra.TypeScript.Syntax: [forOfStatementLeft] :: ForOfStatement -> ForInLeft
- Hydra.TypeScript.Syntax: [forOfStatementRight] :: ForOfStatement -> Expression
- Hydra.TypeScript.Syntax: [forStatementBody] :: ForStatement -> Statement
- Hydra.TypeScript.Syntax: [forStatementInit] :: ForStatement -> Maybe ForInit
- Hydra.TypeScript.Syntax: [forStatementTest] :: ForStatement -> Maybe Expression
- Hydra.TypeScript.Syntax: [forStatementUpdate] :: ForStatement -> Maybe Expression
- Hydra.TypeScript.Syntax: [functionDeclarationAsync] :: FunctionDeclaration -> Bool
- Hydra.TypeScript.Syntax: [functionDeclarationBody] :: FunctionDeclaration -> BlockStatement
- Hydra.TypeScript.Syntax: [functionDeclarationGenerator] :: FunctionDeclaration -> Bool
- Hydra.TypeScript.Syntax: [functionDeclarationId] :: FunctionDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [functionDeclarationParams] :: FunctionDeclaration -> [Pattern]
- Hydra.TypeScript.Syntax: [functionDeclarationWithCommentsBody] :: FunctionDeclarationWithComments -> FunctionDeclaration
- Hydra.TypeScript.Syntax: [functionDeclarationWithCommentsComments] :: FunctionDeclarationWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [functionExpressionAsync] :: FunctionExpression -> Bool
- Hydra.TypeScript.Syntax: [functionExpressionBody] :: FunctionExpression -> BlockStatement
- Hydra.TypeScript.Syntax: [functionExpressionGenerator] :: FunctionExpression -> Bool
- Hydra.TypeScript.Syntax: [functionExpressionId] :: FunctionExpression -> Maybe Identifier
- Hydra.TypeScript.Syntax: [functionExpressionParams] :: FunctionExpression -> [Pattern]
- Hydra.TypeScript.Syntax: [functionTypeExpressionParameters] :: FunctionTypeExpression -> [TypeExpression]
- Hydra.TypeScript.Syntax: [functionTypeExpressionReturnType] :: FunctionTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [functionTypeExpressionTypeParameters] :: FunctionTypeExpression -> [TypeParameter]
- Hydra.TypeScript.Syntax: [ifStatementAlternate] :: IfStatement -> Maybe Statement
- Hydra.TypeScript.Syntax: [ifStatementConsequent] :: IfStatement -> Statement
- Hydra.TypeScript.Syntax: [ifStatementTest] :: IfStatement -> Expression
- Hydra.TypeScript.Syntax: [importDeclarationSource] :: ImportDeclaration -> StringLiteral
- Hydra.TypeScript.Syntax: [importDeclarationSpecifiers] :: ImportDeclaration -> [ImportClause]
- Hydra.TypeScript.Syntax: [importSpecifierImported] :: ImportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [importSpecifierLocal] :: ImportSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [interfaceDeclarationExtends] :: InterfaceDeclaration -> [TypeExpression]
- Hydra.TypeScript.Syntax: [interfaceDeclarationMembers] :: InterfaceDeclaration -> [PropertySignature]
- Hydra.TypeScript.Syntax: [interfaceDeclarationName] :: InterfaceDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [interfaceDeclarationTypeParameters] :: InterfaceDeclaration -> [TypeParameter]
- Hydra.TypeScript.Syntax: [labeledStatementBody] :: LabeledStatement -> Statement
- Hydra.TypeScript.Syntax: [labeledStatementLabel] :: LabeledStatement -> Identifier
- Hydra.TypeScript.Syntax: [memberExpressionComputed] :: MemberExpression -> Bool
- Hydra.TypeScript.Syntax: [memberExpressionObject] :: MemberExpression -> Expression
- Hydra.TypeScript.Syntax: [memberExpressionOptional] :: MemberExpression -> Bool
- Hydra.TypeScript.Syntax: [memberExpressionProperty] :: MemberExpression -> Expression
- Hydra.TypeScript.Syntax: [methodDefinitionComputed] :: MethodDefinition -> Bool
- Hydra.TypeScript.Syntax: [methodDefinitionKey] :: MethodDefinition -> Expression
- Hydra.TypeScript.Syntax: [methodDefinitionKind] :: MethodDefinition -> MethodKind
- Hydra.TypeScript.Syntax: [methodDefinitionStatic] :: MethodDefinition -> Bool
- Hydra.TypeScript.Syntax: [methodDefinitionValue] :: MethodDefinition -> FunctionExpression
- Hydra.TypeScript.Syntax: [moduleItemWithCommentsBody] :: ModuleItemWithComments -> ModuleItem
- Hydra.TypeScript.Syntax: [moduleItemWithCommentsComments] :: ModuleItemWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [namedExportSource] :: NamedExport -> Maybe StringLiteral
- Hydra.TypeScript.Syntax: [namedExportSpecifiers] :: NamedExport -> [ExportSpecifier]
- Hydra.TypeScript.Syntax: [objectPatternProperties] :: ObjectPattern -> [ObjectPatternProperty]
- Hydra.TypeScript.Syntax: [parameterizedTypeExpressionArguments] :: ParameterizedTypeExpression -> [TypeExpression]
- Hydra.TypeScript.Syntax: [parameterizedTypeExpressionBase] :: ParameterizedTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [programBody] :: Program -> [ModuleItem]
- Hydra.TypeScript.Syntax: [programSourceType] :: Program -> SourceType
- Hydra.TypeScript.Syntax: [propertyComputed] :: Property -> Bool
- Hydra.TypeScript.Syntax: [propertyKey] :: Property -> Expression
- Hydra.TypeScript.Syntax: [propertyKind] :: Property -> PropertyKind
- Hydra.TypeScript.Syntax: [propertyShorthand] :: Property -> Bool
- Hydra.TypeScript.Syntax: [propertySignatureComments] :: PropertySignature -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [propertySignatureName] :: PropertySignature -> Identifier
- Hydra.TypeScript.Syntax: [propertySignatureOptional] :: PropertySignature -> Bool
- Hydra.TypeScript.Syntax: [propertySignatureReadonly] :: PropertySignature -> Bool
- Hydra.TypeScript.Syntax: [propertySignatureType] :: PropertySignature -> TypeExpression
- Hydra.TypeScript.Syntax: [propertyValue] :: Property -> Expression
- Hydra.TypeScript.Syntax: [statementWithCommentsBody] :: StatementWithComments -> Statement
- Hydra.TypeScript.Syntax: [statementWithCommentsComments] :: StatementWithComments -> Maybe DocumentationComment
- Hydra.TypeScript.Syntax: [stringLiteralSingleQuote] :: StringLiteral -> Bool
- Hydra.TypeScript.Syntax: [stringLiteralValue] :: StringLiteral -> String
- Hydra.TypeScript.Syntax: [switchCaseConsequent] :: SwitchCase -> [Statement]
- Hydra.TypeScript.Syntax: [switchCaseTest] :: SwitchCase -> Maybe Expression
- Hydra.TypeScript.Syntax: [switchStatementCases] :: SwitchStatement -> [SwitchCase]
- Hydra.TypeScript.Syntax: [switchStatementDiscriminant] :: SwitchStatement -> Expression
- Hydra.TypeScript.Syntax: [templateElementTail] :: TemplateElement -> Bool
- Hydra.TypeScript.Syntax: [templateElementValue] :: TemplateElement -> String
- Hydra.TypeScript.Syntax: [templateLiteralExpressions] :: TemplateLiteral -> [Expression]
- Hydra.TypeScript.Syntax: [templateLiteralQuasis] :: TemplateLiteral -> [TemplateElement]
- Hydra.TypeScript.Syntax: [tryStatementBlock] :: TryStatement -> BlockStatement
- Hydra.TypeScript.Syntax: [tryStatementFinalizer] :: TryStatement -> Maybe BlockStatement
- Hydra.TypeScript.Syntax: [tryStatementHandler] :: TryStatement -> Maybe CatchClause
- Hydra.TypeScript.Syntax: [typeAliasDeclarationName] :: TypeAliasDeclaration -> Identifier
- Hydra.TypeScript.Syntax: [typeAliasDeclarationTypeParameters] :: TypeAliasDeclaration -> [TypeParameter]
- Hydra.TypeScript.Syntax: [typeAliasDeclarationType] :: TypeAliasDeclaration -> TypeExpression
- Hydra.TypeScript.Syntax: [typeParameterConstraint] :: TypeParameter -> Maybe TypeExpression
- Hydra.TypeScript.Syntax: [typeParameterDefault] :: TypeParameter -> Maybe TypeExpression
- Hydra.TypeScript.Syntax: [typeParameterName] :: TypeParameter -> Identifier
- Hydra.TypeScript.Syntax: [typedPatternPattern] :: TypedPattern -> Pattern
- Hydra.TypeScript.Syntax: [typedPatternType] :: TypedPattern -> TypeExpression
- Hydra.TypeScript.Syntax: [unArrayTypeExpression] :: ArrayTypeExpression -> TypeExpression
- Hydra.TypeScript.Syntax: [unIdentifier] :: Identifier -> String
- Hydra.TypeScript.Syntax: [unImportDefaultSpecifier] :: ImportDefaultSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [unImportNamespaceSpecifier] :: ImportNamespaceSpecifier -> Identifier
- Hydra.TypeScript.Syntax: [unRestElement] :: RestElement -> Pattern
- Hydra.TypeScript.Syntax: [unSpreadElement] :: SpreadElement -> Expression
- Hydra.TypeScript.Syntax: [unThrowStatement] :: ThrowStatement -> Expression
- Hydra.TypeScript.Syntax: [unTypeAnnotation] :: TypeAnnotation -> TypeExpression
- Hydra.TypeScript.Syntax: [unaryExpressionArgument] :: UnaryExpression -> Expression
- Hydra.TypeScript.Syntax: [unaryExpressionOperator] :: UnaryExpression -> UnaryOperator
- Hydra.TypeScript.Syntax: [unaryExpressionPrefix] :: UnaryExpression -> Bool
- Hydra.TypeScript.Syntax: [variableDeclarationDeclarations] :: VariableDeclaration -> [VariableDeclarator]
- Hydra.TypeScript.Syntax: [variableDeclarationKind] :: VariableDeclaration -> VariableKind
- Hydra.TypeScript.Syntax: [variableDeclaratorId] :: VariableDeclarator -> Pattern
- Hydra.TypeScript.Syntax: [variableDeclaratorInit] :: VariableDeclarator -> Maybe Expression
- Hydra.TypeScript.Syntax: [whileStatementBody] :: WhileStatement -> Statement
- Hydra.TypeScript.Syntax: [whileStatementTest] :: WhileStatement -> Expression
- Hydra.TypeScript.Syntax: _ArrayElement :: Name
- Hydra.TypeScript.Syntax: _ArrayElement_expression :: Name
- Hydra.TypeScript.Syntax: _ArrayElement_hole :: Name
- Hydra.TypeScript.Syntax: _ArrayElement_spread :: Name
- Hydra.TypeScript.Syntax: _ArrayExpression :: Name
- Hydra.TypeScript.Syntax: _ArrayPattern :: Name
- Hydra.TypeScript.Syntax: _ArrayTypeExpression :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionBody :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionBody_block :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionBody_expression :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression_async :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression_body :: Name
- Hydra.TypeScript.Syntax: _ArrowFunctionExpression_params :: Name
- Hydra.TypeScript.Syntax: _AsExpression :: Name
- Hydra.TypeScript.Syntax: _AsExpression_expression :: Name
- Hydra.TypeScript.Syntax: _AsExpression_type :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression_left :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression_operator :: Name
- Hydra.TypeScript.Syntax: _AssignmentExpression_right :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_addAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_andAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_assign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_bitwiseAndAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_bitwiseOrAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_bitwiseXorAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_divideAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_exponentiateAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_leftShiftAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_moduloAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_multiplyAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_nullishAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_orAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_rightShiftAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_subtractAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentOperator_unsignedRightShiftAssign :: Name
- Hydra.TypeScript.Syntax: _AssignmentPattern :: Name
- Hydra.TypeScript.Syntax: _AssignmentPattern_left :: Name
- Hydra.TypeScript.Syntax: _AssignmentPattern_right :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression_left :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression_operator :: Name
- Hydra.TypeScript.Syntax: _BinaryExpression_right :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_add :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_and :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_bitwiseAnd :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_bitwiseOr :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_bitwiseXor :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_divide :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_equal :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_exponentiate :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_greaterThan :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_greaterThanOrEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_in :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_instanceof :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_leftShift :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_lessThan :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_lessThanOrEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_modulo :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_multiply :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_notEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_nullishCoalescing :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_or :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_rightShift :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_strictEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_strictNotEqual :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_subtract :: Name
- Hydra.TypeScript.Syntax: _BinaryOperator_unsignedRightShift :: Name
- Hydra.TypeScript.Syntax: _BlockStatement :: Name
- Hydra.TypeScript.Syntax: _BreakStatement :: Name
- Hydra.TypeScript.Syntax: _CallExpression :: Name
- Hydra.TypeScript.Syntax: _CallExpression_arguments :: Name
- Hydra.TypeScript.Syntax: _CallExpression_callee :: Name
- Hydra.TypeScript.Syntax: _CallExpression_optional :: Name
- Hydra.TypeScript.Syntax: _CatchClause :: Name
- Hydra.TypeScript.Syntax: _CatchClause_body :: Name
- Hydra.TypeScript.Syntax: _CatchClause_param :: Name
- Hydra.TypeScript.Syntax: _ClassBody :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration :: Name
- Hydra.TypeScript.Syntax: _ClassDeclarationWithComments :: Name
- Hydra.TypeScript.Syntax: _ClassDeclarationWithComments_body :: Name
- Hydra.TypeScript.Syntax: _ClassDeclarationWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration_body :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration_id :: Name
- Hydra.TypeScript.Syntax: _ClassDeclaration_superClass :: Name
- Hydra.TypeScript.Syntax: _Comment :: Name
- Hydra.TypeScript.Syntax: _Comment_block :: Name
- Hydra.TypeScript.Syntax: _Comment_documentation :: Name
- Hydra.TypeScript.Syntax: _Comment_line :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression_alternate :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression_consequent :: Name
- Hydra.TypeScript.Syntax: _ConditionalExpression_test :: Name
- Hydra.TypeScript.Syntax: _ContinueStatement :: Name
- Hydra.TypeScript.Syntax: _DoWhileStatement :: Name
- Hydra.TypeScript.Syntax: _DoWhileStatement_body :: Name
- Hydra.TypeScript.Syntax: _DoWhileStatement_test :: Name
- Hydra.TypeScript.Syntax: _DocumentationComment :: Name
- Hydra.TypeScript.Syntax: _DocumentationComment_description :: Name
- Hydra.TypeScript.Syntax: _DocumentationComment_tags :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_description :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_name :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_paramName :: Name
- Hydra.TypeScript.Syntax: _DocumentationTag_type :: Name
- Hydra.TypeScript.Syntax: _ExportAllDeclaration :: Name
- Hydra.TypeScript.Syntax: _ExportAllDeclaration_exported :: Name
- Hydra.TypeScript.Syntax: _ExportAllDeclaration_source :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_all :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_declaration :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_default :: Name
- Hydra.TypeScript.Syntax: _ExportDeclaration_named :: Name
- Hydra.TypeScript.Syntax: _ExportSpecifier :: Name
- Hydra.TypeScript.Syntax: _ExportSpecifier_exported :: Name
- Hydra.TypeScript.Syntax: _ExportSpecifier_local :: Name
- Hydra.TypeScript.Syntax: _Expression :: Name
- Hydra.TypeScript.Syntax: _Expression_array :: Name
- Hydra.TypeScript.Syntax: _Expression_arrow :: Name
- Hydra.TypeScript.Syntax: _Expression_asExpression :: Name
- Hydra.TypeScript.Syntax: _Expression_assignment :: Name
- Hydra.TypeScript.Syntax: _Expression_await :: Name
- Hydra.TypeScript.Syntax: _Expression_binary :: Name
- Hydra.TypeScript.Syntax: _Expression_call :: Name
- Hydra.TypeScript.Syntax: _Expression_conditional :: Name
- Hydra.TypeScript.Syntax: _Expression_function :: Name
- Hydra.TypeScript.Syntax: _Expression_identifier :: Name
- Hydra.TypeScript.Syntax: _Expression_literal :: Name
- Hydra.TypeScript.Syntax: _Expression_member :: Name
- Hydra.TypeScript.Syntax: _Expression_new :: Name
- Hydra.TypeScript.Syntax: _Expression_object :: Name
- Hydra.TypeScript.Syntax: _Expression_parenthesized :: Name
- Hydra.TypeScript.Syntax: _Expression_sequence :: Name
- Hydra.TypeScript.Syntax: _Expression_spread :: Name
- Hydra.TypeScript.Syntax: _Expression_this :: Name
- Hydra.TypeScript.Syntax: _Expression_unary :: Name
- Hydra.TypeScript.Syntax: _Expression_yield :: Name
- Hydra.TypeScript.Syntax: _ForInLeft :: Name
- Hydra.TypeScript.Syntax: _ForInLeft_pattern :: Name
- Hydra.TypeScript.Syntax: _ForInLeft_variable :: Name
- Hydra.TypeScript.Syntax: _ForInStatement :: Name
- Hydra.TypeScript.Syntax: _ForInStatement_body :: Name
- Hydra.TypeScript.Syntax: _ForInStatement_left :: Name
- Hydra.TypeScript.Syntax: _ForInStatement_right :: Name
- Hydra.TypeScript.Syntax: _ForInit :: Name
- Hydra.TypeScript.Syntax: _ForInit_expression :: Name
- Hydra.TypeScript.Syntax: _ForInit_variable :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_await :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_body :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_left :: Name
- Hydra.TypeScript.Syntax: _ForOfStatement_right :: Name
- Hydra.TypeScript.Syntax: _ForStatement :: Name
- Hydra.TypeScript.Syntax: _ForStatement_body :: Name
- Hydra.TypeScript.Syntax: _ForStatement_init :: Name
- Hydra.TypeScript.Syntax: _ForStatement_test :: Name
- Hydra.TypeScript.Syntax: _ForStatement_update :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclarationWithComments :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclarationWithComments_body :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclarationWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_async :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_body :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_generator :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_id :: Name
- Hydra.TypeScript.Syntax: _FunctionDeclaration_params :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_async :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_body :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_generator :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_id :: Name
- Hydra.TypeScript.Syntax: _FunctionExpression_params :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression_parameters :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression_returnType :: Name
- Hydra.TypeScript.Syntax: _FunctionTypeExpression_typeParameters :: Name
- Hydra.TypeScript.Syntax: _Identifier :: Name
- Hydra.TypeScript.Syntax: _IfStatement :: Name
- Hydra.TypeScript.Syntax: _IfStatement_alternate :: Name
- Hydra.TypeScript.Syntax: _IfStatement_consequent :: Name
- Hydra.TypeScript.Syntax: _IfStatement_test :: Name
- Hydra.TypeScript.Syntax: _ImportClause :: Name
- Hydra.TypeScript.Syntax: _ImportClause_default :: Name
- Hydra.TypeScript.Syntax: _ImportClause_named :: Name
- Hydra.TypeScript.Syntax: _ImportClause_namespace :: Name
- Hydra.TypeScript.Syntax: _ImportDeclaration :: Name
- Hydra.TypeScript.Syntax: _ImportDeclaration_source :: Name
- Hydra.TypeScript.Syntax: _ImportDeclaration_specifiers :: Name
- Hydra.TypeScript.Syntax: _ImportDefaultSpecifier :: Name
- Hydra.TypeScript.Syntax: _ImportNamespaceSpecifier :: Name
- Hydra.TypeScript.Syntax: _ImportSpecifier :: Name
- Hydra.TypeScript.Syntax: _ImportSpecifier_imported :: Name
- Hydra.TypeScript.Syntax: _ImportSpecifier_local :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_extends :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_members :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_name :: Name
- Hydra.TypeScript.Syntax: _InterfaceDeclaration_typeParameters :: Name
- Hydra.TypeScript.Syntax: _IntersectionTypeExpression :: Name
- Hydra.TypeScript.Syntax: _LabeledStatement :: Name
- Hydra.TypeScript.Syntax: _LabeledStatement_body :: Name
- Hydra.TypeScript.Syntax: _LabeledStatement_label :: Name
- Hydra.TypeScript.Syntax: _Literal :: Name
- Hydra.TypeScript.Syntax: _Literal_bigInt :: Name
- Hydra.TypeScript.Syntax: _Literal_boolean :: Name
- Hydra.TypeScript.Syntax: _Literal_null :: Name
- Hydra.TypeScript.Syntax: _Literal_number :: Name
- Hydra.TypeScript.Syntax: _Literal_string :: Name
- Hydra.TypeScript.Syntax: _Literal_template :: Name
- Hydra.TypeScript.Syntax: _Literal_undefined :: Name
- Hydra.TypeScript.Syntax: _MemberExpression :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_computed :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_object :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_optional :: Name
- Hydra.TypeScript.Syntax: _MemberExpression_property :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_computed :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_key :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_kind :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_static :: Name
- Hydra.TypeScript.Syntax: _MethodDefinition_value :: Name
- Hydra.TypeScript.Syntax: _MethodKind :: Name
- Hydra.TypeScript.Syntax: _MethodKind_constructor :: Name
- Hydra.TypeScript.Syntax: _MethodKind_get :: Name
- Hydra.TypeScript.Syntax: _MethodKind_method :: Name
- Hydra.TypeScript.Syntax: _MethodKind_set :: Name
- Hydra.TypeScript.Syntax: _ModuleItem :: Name
- Hydra.TypeScript.Syntax: _ModuleItemWithComments :: Name
- Hydra.TypeScript.Syntax: _ModuleItemWithComments_body :: Name
- Hydra.TypeScript.Syntax: _ModuleItemWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_export :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_import :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_interface :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_statement :: Name
- Hydra.TypeScript.Syntax: _ModuleItem_typeAlias :: Name
- Hydra.TypeScript.Syntax: _NamedExport :: Name
- Hydra.TypeScript.Syntax: _NamedExport_source :: Name
- Hydra.TypeScript.Syntax: _NamedExport_specifiers :: Name
- Hydra.TypeScript.Syntax: _NumericLiteral :: Name
- Hydra.TypeScript.Syntax: _NumericLiteral_float :: Name
- Hydra.TypeScript.Syntax: _NumericLiteral_integer :: Name
- Hydra.TypeScript.Syntax: _ObjectExpression :: Name
- Hydra.TypeScript.Syntax: _ObjectPattern :: Name
- Hydra.TypeScript.Syntax: _ObjectPatternProperty :: Name
- Hydra.TypeScript.Syntax: _ObjectPatternProperty_property :: Name
- Hydra.TypeScript.Syntax: _ObjectPatternProperty_rest :: Name
- Hydra.TypeScript.Syntax: _ObjectPattern_properties :: Name
- Hydra.TypeScript.Syntax: _ObjectTypeExpression :: Name
- Hydra.TypeScript.Syntax: _ParameterizedTypeExpression :: Name
- Hydra.TypeScript.Syntax: _ParameterizedTypeExpression_arguments :: Name
- Hydra.TypeScript.Syntax: _ParameterizedTypeExpression_base :: Name
- Hydra.TypeScript.Syntax: _Pattern :: Name
- Hydra.TypeScript.Syntax: _Pattern_array :: Name
- Hydra.TypeScript.Syntax: _Pattern_assignment :: Name
- Hydra.TypeScript.Syntax: _Pattern_identifier :: Name
- Hydra.TypeScript.Syntax: _Pattern_object :: Name
- Hydra.TypeScript.Syntax: _Pattern_rest :: Name
- Hydra.TypeScript.Syntax: _Pattern_typed :: Name
- Hydra.TypeScript.Syntax: _Program :: Name
- Hydra.TypeScript.Syntax: _Program_body :: Name
- Hydra.TypeScript.Syntax: _Program_sourceType :: Name
- Hydra.TypeScript.Syntax: _Property :: Name
- Hydra.TypeScript.Syntax: _PropertyKind :: Name
- Hydra.TypeScript.Syntax: _PropertyKind_get :: Name
- Hydra.TypeScript.Syntax: _PropertyKind_init :: Name
- Hydra.TypeScript.Syntax: _PropertyKind_set :: Name
- Hydra.TypeScript.Syntax: _PropertySignature :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_comments :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_name :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_optional :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_readonly :: Name
- Hydra.TypeScript.Syntax: _PropertySignature_type :: Name
- Hydra.TypeScript.Syntax: _Property_computed :: Name
- Hydra.TypeScript.Syntax: _Property_key :: Name
- Hydra.TypeScript.Syntax: _Property_kind :: Name
- Hydra.TypeScript.Syntax: _Property_shorthand :: Name
- Hydra.TypeScript.Syntax: _Property_value :: Name
- Hydra.TypeScript.Syntax: _QualifiedName :: Name
- Hydra.TypeScript.Syntax: _RestElement :: Name
- Hydra.TypeScript.Syntax: _ReturnStatement :: Name
- Hydra.TypeScript.Syntax: _SourceType :: Name
- Hydra.TypeScript.Syntax: _SourceType_module :: Name
- Hydra.TypeScript.Syntax: _SourceType_script :: Name
- Hydra.TypeScript.Syntax: _SpreadElement :: Name
- Hydra.TypeScript.Syntax: _Statement :: Name
- Hydra.TypeScript.Syntax: _StatementWithComments :: Name
- Hydra.TypeScript.Syntax: _StatementWithComments_body :: Name
- Hydra.TypeScript.Syntax: _StatementWithComments_comments :: Name
- Hydra.TypeScript.Syntax: _Statement_block :: Name
- Hydra.TypeScript.Syntax: _Statement_break :: Name
- Hydra.TypeScript.Syntax: _Statement_classDeclaration :: Name
- Hydra.TypeScript.Syntax: _Statement_continue :: Name
- Hydra.TypeScript.Syntax: _Statement_debugger :: Name
- Hydra.TypeScript.Syntax: _Statement_doWhile :: Name
- Hydra.TypeScript.Syntax: _Statement_empty :: Name
- Hydra.TypeScript.Syntax: _Statement_expression :: Name
- Hydra.TypeScript.Syntax: _Statement_for :: Name
- Hydra.TypeScript.Syntax: _Statement_forIn :: Name
- Hydra.TypeScript.Syntax: _Statement_forOf :: Name
- Hydra.TypeScript.Syntax: _Statement_functionDeclaration :: Name
- Hydra.TypeScript.Syntax: _Statement_if :: Name
- Hydra.TypeScript.Syntax: _Statement_labeled :: Name
- Hydra.TypeScript.Syntax: _Statement_return :: Name
- Hydra.TypeScript.Syntax: _Statement_switch :: Name
- Hydra.TypeScript.Syntax: _Statement_throw :: Name
- Hydra.TypeScript.Syntax: _Statement_try :: Name
- Hydra.TypeScript.Syntax: _Statement_variableDeclaration :: Name
- Hydra.TypeScript.Syntax: _Statement_while :: Name
- Hydra.TypeScript.Syntax: _StringLiteral :: Name
- Hydra.TypeScript.Syntax: _StringLiteral_singleQuote :: Name
- Hydra.TypeScript.Syntax: _StringLiteral_value :: Name
- Hydra.TypeScript.Syntax: _SwitchCase :: Name
- Hydra.TypeScript.Syntax: _SwitchCase_consequent :: Name
- Hydra.TypeScript.Syntax: _SwitchCase_test :: Name
- Hydra.TypeScript.Syntax: _SwitchStatement :: Name
- Hydra.TypeScript.Syntax: _SwitchStatement_cases :: Name
- Hydra.TypeScript.Syntax: _SwitchStatement_discriminant :: Name
- Hydra.TypeScript.Syntax: _TemplateElement :: Name
- Hydra.TypeScript.Syntax: _TemplateElement_tail :: Name
- Hydra.TypeScript.Syntax: _TemplateElement_value :: Name
- Hydra.TypeScript.Syntax: _TemplateLiteral :: Name
- Hydra.TypeScript.Syntax: _TemplateLiteral_expressions :: Name
- Hydra.TypeScript.Syntax: _TemplateLiteral_quasis :: Name
- Hydra.TypeScript.Syntax: _ThrowStatement :: Name
- Hydra.TypeScript.Syntax: _TryStatement :: Name
- Hydra.TypeScript.Syntax: _TryStatement_block :: Name
- Hydra.TypeScript.Syntax: _TryStatement_finalizer :: Name
- Hydra.TypeScript.Syntax: _TryStatement_handler :: Name
- Hydra.TypeScript.Syntax: _TupleTypeExpression :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration_name :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration_type :: Name
- Hydra.TypeScript.Syntax: _TypeAliasDeclaration_typeParameters :: Name
- Hydra.TypeScript.Syntax: _TypeAnnotation :: Name
- Hydra.TypeScript.Syntax: _TypeExpression :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_any :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_array :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_function :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_identifier :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_intersection :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_literal :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_never :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_object :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_optional :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_parameterized :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_readonly :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_tuple :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_union :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_unknown :: Name
- Hydra.TypeScript.Syntax: _TypeExpression_void :: Name
- Hydra.TypeScript.Syntax: _TypeParameter :: Name
- Hydra.TypeScript.Syntax: _TypeParameter_constraint :: Name
- Hydra.TypeScript.Syntax: _TypeParameter_default :: Name
- Hydra.TypeScript.Syntax: _TypeParameter_name :: Name
- Hydra.TypeScript.Syntax: _TypedPattern :: Name
- Hydra.TypeScript.Syntax: _TypedPattern_pattern :: Name
- Hydra.TypeScript.Syntax: _TypedPattern_type :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression_argument :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression_operator :: Name
- Hydra.TypeScript.Syntax: _UnaryExpression_prefix :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_bitwiseNot :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_decrement :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_delete :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_increment :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_negate :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_not :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_plus :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_typeof :: Name
- Hydra.TypeScript.Syntax: _UnaryOperator_void :: Name
- Hydra.TypeScript.Syntax: _UnionTypeExpression :: Name
- Hydra.TypeScript.Syntax: _VariableDeclaration :: Name
- Hydra.TypeScript.Syntax: _VariableDeclaration_declarations :: Name
- Hydra.TypeScript.Syntax: _VariableDeclaration_kind :: Name
- Hydra.TypeScript.Syntax: _VariableDeclarator :: Name
- Hydra.TypeScript.Syntax: _VariableDeclarator_id :: Name
- Hydra.TypeScript.Syntax: _VariableDeclarator_init :: Name
- Hydra.TypeScript.Syntax: _VariableKind :: Name
- Hydra.TypeScript.Syntax: _VariableKind_const :: Name
- Hydra.TypeScript.Syntax: _VariableKind_let :: Name
- Hydra.TypeScript.Syntax: _VariableKind_var :: Name
- Hydra.TypeScript.Syntax: _WhileStatement :: Name
- Hydra.TypeScript.Syntax: _WhileStatement_body :: Name
- Hydra.TypeScript.Syntax: _WhileStatement_test :: Name
- Hydra.TypeScript.Syntax: data ArrayElement
- Hydra.TypeScript.Syntax: data ArrowFunctionBody
- Hydra.TypeScript.Syntax: data ArrowFunctionExpression
- Hydra.TypeScript.Syntax: data AsExpression
- Hydra.TypeScript.Syntax: data AssignmentExpression
- Hydra.TypeScript.Syntax: data AssignmentOperator
- Hydra.TypeScript.Syntax: data AssignmentPattern
- Hydra.TypeScript.Syntax: data BinaryExpression
- Hydra.TypeScript.Syntax: data BinaryOperator
- Hydra.TypeScript.Syntax: data CallExpression
- Hydra.TypeScript.Syntax: data CatchClause
- Hydra.TypeScript.Syntax: data ClassDeclaration
- Hydra.TypeScript.Syntax: data ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: data Comment
- Hydra.TypeScript.Syntax: data ConditionalExpression
- Hydra.TypeScript.Syntax: data DoWhileStatement
- Hydra.TypeScript.Syntax: data DocumentationComment
- Hydra.TypeScript.Syntax: data DocumentationTag
- Hydra.TypeScript.Syntax: data ExportAllDeclaration
- Hydra.TypeScript.Syntax: data ExportDeclaration
- Hydra.TypeScript.Syntax: data ExportSpecifier
- Hydra.TypeScript.Syntax: data Expression
- Hydra.TypeScript.Syntax: data ForInLeft
- Hydra.TypeScript.Syntax: data ForInStatement
- Hydra.TypeScript.Syntax: data ForInit
- Hydra.TypeScript.Syntax: data ForOfStatement
- Hydra.TypeScript.Syntax: data ForStatement
- Hydra.TypeScript.Syntax: data FunctionDeclaration
- Hydra.TypeScript.Syntax: data FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: data FunctionExpression
- Hydra.TypeScript.Syntax: data FunctionTypeExpression
- Hydra.TypeScript.Syntax: data IfStatement
- Hydra.TypeScript.Syntax: data ImportClause
- Hydra.TypeScript.Syntax: data ImportDeclaration
- Hydra.TypeScript.Syntax: data ImportSpecifier
- Hydra.TypeScript.Syntax: data InterfaceDeclaration
- Hydra.TypeScript.Syntax: data LabeledStatement
- Hydra.TypeScript.Syntax: data Literal
- Hydra.TypeScript.Syntax: data MemberExpression
- Hydra.TypeScript.Syntax: data MethodDefinition
- Hydra.TypeScript.Syntax: data MethodKind
- Hydra.TypeScript.Syntax: data ModuleItem
- Hydra.TypeScript.Syntax: data ModuleItemWithComments
- Hydra.TypeScript.Syntax: data NamedExport
- Hydra.TypeScript.Syntax: data NumericLiteral
- Hydra.TypeScript.Syntax: data ObjectPattern
- Hydra.TypeScript.Syntax: data ObjectPatternProperty
- Hydra.TypeScript.Syntax: data ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: data Pattern
- Hydra.TypeScript.Syntax: data Program
- Hydra.TypeScript.Syntax: data Property
- Hydra.TypeScript.Syntax: data PropertyKind
- Hydra.TypeScript.Syntax: data PropertySignature
- Hydra.TypeScript.Syntax: data SourceType
- Hydra.TypeScript.Syntax: data Statement
- Hydra.TypeScript.Syntax: data StatementWithComments
- Hydra.TypeScript.Syntax: data StringLiteral
- Hydra.TypeScript.Syntax: data SwitchCase
- Hydra.TypeScript.Syntax: data SwitchStatement
- Hydra.TypeScript.Syntax: data TemplateElement
- Hydra.TypeScript.Syntax: data TemplateLiteral
- Hydra.TypeScript.Syntax: data TryStatement
- Hydra.TypeScript.Syntax: data TypeAliasDeclaration
- Hydra.TypeScript.Syntax: data TypeExpression
- Hydra.TypeScript.Syntax: data TypeParameter
- Hydra.TypeScript.Syntax: data TypedPattern
- Hydra.TypeScript.Syntax: data UnaryExpression
- Hydra.TypeScript.Syntax: data UnaryOperator
- Hydra.TypeScript.Syntax: data VariableDeclaration
- Hydra.TypeScript.Syntax: data VariableDeclarator
- Hydra.TypeScript.Syntax: data VariableKind
- Hydra.TypeScript.Syntax: data WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Eq Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Classes.Ord Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Read.Read Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrayElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrayTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrowFunctionBody
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ArrowFunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AsExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AssignmentExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AssignmentOperator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.AssignmentPattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.BinaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.BinaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.CallExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.CatchClause
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ClassDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ClassDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Comment
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ConditionalExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.DoWhileStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.DocumentationComment
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.DocumentationTag
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ExportAllDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ExportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ExportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Expression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForInLeft
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForInStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForInit
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForOfStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ForStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionDeclarationWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.FunctionTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Identifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.IfStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportClause
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ImportSpecifier
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.InterfaceDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.LabeledStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Literal
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.MemberExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.MethodDefinition
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.MethodKind
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ModuleItem
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ModuleItemWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.NamedExport
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.NumericLiteral
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ObjectPattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ObjectPatternProperty
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ParameterizedTypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Pattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Program
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Property
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.PropertyKind
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.PropertySignature
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.RestElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SourceType
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SpreadElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.Statement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.StatementWithComments
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.StringLiteral
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SwitchCase
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.SwitchStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TemplateElement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TemplateLiteral
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.ThrowStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TryStatement
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeAliasDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeAnnotation
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypeParameter
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.TypedPattern
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.UnaryExpression
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.UnaryOperator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.VariableDeclaration
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.VariableDeclarator
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.VariableKind
- Hydra.TypeScript.Syntax: instance GHC.Show.Show Hydra.TypeScript.Syntax.WhileStatement
- Hydra.TypeScript.Syntax: newtype ArrayTypeExpression
- Hydra.TypeScript.Syntax: newtype Identifier
- Hydra.TypeScript.Syntax: newtype ImportDefaultSpecifier
- Hydra.TypeScript.Syntax: newtype ImportNamespaceSpecifier
- Hydra.TypeScript.Syntax: newtype RestElement
- Hydra.TypeScript.Syntax: newtype SpreadElement
- Hydra.TypeScript.Syntax: newtype ThrowStatement
- Hydra.TypeScript.Syntax: newtype TypeAnnotation
- Hydra.TypeScript.Syntax: type ArrayExpression = [ArrayElement]
- Hydra.TypeScript.Syntax: type ArrayPattern = [Maybe Pattern]
- Hydra.TypeScript.Syntax: type BlockStatement = [Statement]
- Hydra.TypeScript.Syntax: type BreakStatement = Maybe Identifier
- Hydra.TypeScript.Syntax: type ClassBody = [MethodDefinition]
- Hydra.TypeScript.Syntax: type ContinueStatement = Maybe Identifier
- Hydra.TypeScript.Syntax: type IntersectionTypeExpression = [TypeExpression]
- Hydra.TypeScript.Syntax: type ObjectExpression = [Property]
- Hydra.TypeScript.Syntax: type ObjectTypeExpression = [PropertySignature]
- Hydra.TypeScript.Syntax: type QualifiedName = [Identifier]
- Hydra.TypeScript.Syntax: type ReturnStatement = Maybe Expression
- Hydra.TypeScript.Syntax: type TupleTypeExpression = [TypeExpression]
- Hydra.TypeScript.Syntax: type UnionTypeExpression = [TypeExpression]
+ Hydra.Typescript.Coder: analyzeTypeScriptFunction :: InferenceContext -> Graph -> Term -> Either t0 (FunctionStructure Graph)
+ Hydra.Typescript.Coder: collectForallParams :: Type -> [Name]
+ Hydra.Typescript.Coder: collectImports :: ModuleName -> Type -> Set Name
+ Hydra.Typescript.Coder: collectInnerTypeImports :: ModuleName -> Term -> Set Name
+ Hydra.Typescript.Coder: collectTermImports :: ModuleName -> Term -> Set Name
+ Hydra.Typescript.Coder: decimalDigitsAndScale :: String -> ((String, String), Int)
+ Hydra.Typescript.Coder: eagerFreeVariablesInTerm :: Term -> Set Name
+ Hydra.Typescript.Coder: encodeBindingAsStatement :: InferenceContext -> Graph -> ModuleName -> Binding -> Statement
+ Hydra.Typescript.Coder: encodeLazyCall :: InferenceContext -> Graph -> ModuleName -> Term -> [Term] -> [Bool] -> Expression
+ Hydra.Typescript.Coder: encodeLiteral :: Literal -> Expression
+ Hydra.Typescript.Coder: encodeLiteralType :: LiteralType -> TypeExpression
+ Hydra.Typescript.Coder: encodeParam :: t0 -> t1 -> ModuleName -> Name -> Type -> Pattern
+ Hydra.Typescript.Coder: encodeTerm :: InferenceContext -> Graph -> ModuleName -> Term -> Expression
+ Hydra.Typescript.Coder: encodeTermDefinition :: InferenceContext -> Graph -> ModuleName -> TermDefinition -> (Maybe String, ModuleItem)
+ Hydra.Typescript.Coder: encodeType :: t0 -> t1 -> ModuleName -> Type -> Either t2 TypeExpression
+ Hydra.Typescript.Coder: encodeTypeDefinition :: t0 -> Graph -> ModuleName -> TypeDefinition -> Either Error (Maybe String, ModuleItem)
+ Hydra.Typescript.Coder: encodeTypeOrAny :: t0 -> t1 -> ModuleName -> Type -> TypeExpression
+ Hydra.Typescript.Coder: filterNonLocalNames :: ModuleName -> Set Name -> Set Name
+ Hydra.Typescript.Coder: flattenApplication :: Term -> (Term, [Term])
+ Hydra.Typescript.Coder: forceLazyRefs :: Set Name -> Term -> Term
+ Hydra.Typescript.Coder: functionDeclarationFromTerm :: InferenceContext -> Graph -> ModuleName -> String -> Term -> Maybe Type -> FunctionDeclaration
+ Hydra.Typescript.Coder: importsToText :: Set String -> String -> ModuleName -> Set Name -> String
+ Hydra.Typescript.Coder: lazyFlagsForPrimitive :: Graph -> Name -> [Bool]
+ Hydra.Typescript.Coder: letBindingIsThunkCandidate :: Binding -> Bool
+ Hydra.Typescript.Coder: mkDocComment :: Maybe String -> Maybe DocumentationComment
+ Hydra.Typescript.Coder: moduleToTypeScript :: Set String -> Module -> [Definition] -> InferenceContext -> Graph -> Either Error (Map String String)
+ Hydra.Typescript.Coder: printInterfaceDeclaration :: InterfaceDeclaration -> String
+ Hydra.Typescript.Coder: printLiteral :: Literal -> String
+ Hydra.Typescript.Coder: printModuleItem :: ModuleItem -> String
+ Hydra.Typescript.Coder: printPropertySignature :: PropertySignature -> String
+ Hydra.Typescript.Coder: printTypeAliasDeclaration :: TypeAliasDeclaration -> String
+ Hydra.Typescript.Coder: printTypeExpression :: TypeExpression -> String
+ Hydra.Typescript.Coder: printTypeParameter :: TypeParameter -> String
+ Hydra.Typescript.Coder: printTypeParameterList :: [TypeParameter] -> String
+ Hydra.Typescript.Coder: sanitizeParamName :: Name -> String
+ Hydra.Typescript.Coder: sortBindingsTopologically :: [Binding] -> [Binding]
+ Hydra.Typescript.Coder: sortTermDefsTopologically :: t0 -> [TermDefinition] -> [TermDefinition]
+ Hydra.Typescript.Coder: stripForalls :: Type -> Type
+ Hydra.Typescript.Coder: termHeadVariable :: Term -> Maybe Name
+ Hydra.Typescript.Coder: thunkLazyBindings :: [Binding] -> Term -> ([Binding], Term)
+ Hydra.Typescript.Coder: thunkLazyLet :: Let -> Let
+ Hydra.Typescript.Coder: tsArray :: [Expression] -> Expression
+ Hydra.Typescript.Coder: tsArrow :: [String] -> Expression -> Expression
+ Hydra.Typescript.Coder: tsArrowTyped :: [Pattern] -> Expression -> Expression
+ Hydra.Typescript.Coder: tsAsAny :: Expression -> Expression
+ Hydra.Typescript.Coder: tsCall :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Coder: tsCond :: Expression -> Expression -> Expression -> Expression
+ Hydra.Typescript.Coder: tsDocEntityRef :: EntityReference -> String
+ Hydra.Typescript.Coder: tsEnvGetGraph :: t0 -> t0
+ Hydra.Typescript.Coder: tsEnvSetGraph :: t0 -> t1 -> t0
+ Hydra.Typescript.Coder: tsEscapeString :: String -> String
+ Hydra.Typescript.Coder: tsExprIdent :: String -> Expression
+ Hydra.Typescript.Coder: tsExprStr :: String -> Expression
+ Hydra.Typescript.Coder: tsIdent :: String -> Identifier
+ Hydra.Typescript.Coder: tsMember :: Expression -> String -> Expression
+ Hydra.Typescript.Coder: tsNamedType :: String -> TypeExpression
+ Hydra.Typescript.Coder: tsNew :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Coder: tsObject :: [(String, Expression)] -> Expression
+ Hydra.Typescript.Coder: tsParam :: String -> TypeParameter
+ Hydra.Typescript.Coder: tsParamApp1 :: String -> TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsParamApp2 :: String -> TypeExpression -> TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsParen :: Expression -> Expression
+ Hydra.Typescript.Coder: tsPropSig :: String -> Bool -> TypeExpression -> PropertySignature
+ Hydra.Typescript.Coder: tsPropSigWithDoc :: String -> Bool -> TypeExpression -> Maybe DocumentationComment -> PropertySignature
+ Hydra.Typescript.Coder: tsReadonlyMap :: TypeExpression -> TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsReadonlySet :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Coder: tsTuple :: [TypeExpression] -> TypeExpression
+ Hydra.Typescript.Coder: tsTypedIdent :: String -> TypeExpression -> Pattern
+ Hydra.Typescript.Coder: tsUndefined :: Expression
+ Hydra.Typescript.Dsl.Syntax: arrayElementArrayElement :: TypedName ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayElementExpression :: TypedTerm Expression -> TypedTerm ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayElementHole :: TypedTerm ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayElementSpread :: TypedTerm SpreadElement -> TypedTerm ArrayElement
+ Hydra.Typescript.Dsl.Syntax: arrayTypeExpression :: TypedTerm TypeExpression -> TypedTerm ArrayTypeExpression
+ Hydra.Typescript.Dsl.Syntax: arrayTypeExpressionArrayTypeExpression :: TypedName ArrayTypeExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionBodyArrowFunctionBody :: TypedName ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionBodyBlock :: TypedTerm BlockStatement -> TypedTerm ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionBodyExpression :: TypedTerm Expression -> TypedTerm ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpression :: TypedTerm [Pattern] -> TypedTerm ArrowFunctionBody -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionArrowFunctionExpression :: TypedName ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern]
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionWithAsync :: TypedTerm ArrowFunctionExpression -> TypedTerm Bool -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionWithBody :: TypedTerm ArrowFunctionExpression -> TypedTerm ArrowFunctionBody -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: arrowFunctionExpressionWithParams :: TypedTerm ArrowFunctionExpression -> TypedTerm [Pattern] -> TypedTerm ArrowFunctionExpression
+ Hydra.Typescript.Dsl.Syntax: asExpression :: TypedTerm Expression -> TypedTerm TypeExpression -> TypedTerm AsExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionAsExpression :: TypedName AsExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionExpression :: TypedTerm AsExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: asExpressionType :: TypedTerm AsExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionWithExpression :: TypedTerm AsExpression -> TypedTerm Expression -> TypedTerm AsExpression
+ Hydra.Typescript.Dsl.Syntax: asExpressionWithType :: TypedTerm AsExpression -> TypedTerm TypeExpression -> TypedTerm AsExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpression :: TypedTerm AssignmentOperator -> TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionAssignmentExpression :: TypedName AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionRight :: TypedTerm AssignmentExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionWithLeft :: TypedTerm AssignmentExpression -> TypedTerm Pattern -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionWithOperator :: TypedTerm AssignmentExpression -> TypedTerm AssignmentOperator -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentExpressionWithRight :: TypedTerm AssignmentExpression -> TypedTerm Expression -> TypedTerm AssignmentExpression
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAddAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAndAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorAssignmentOperator :: TypedName AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorBitwiseAndAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorBitwiseOrAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorBitwiseXorAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorDivideAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorExponentiateAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorLeftShiftAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorModuloAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorMultiplyAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorNullishAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorOrAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorRightShiftAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorSubtractAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentOperatorUnsignedRightShiftAssign :: TypedTerm AssignmentOperator
+ Hydra.Typescript.Dsl.Syntax: assignmentPattern :: TypedTerm Pattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternAssignmentPattern :: TypedName AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternRight :: TypedTerm AssignmentPattern -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternWithLeft :: TypedTerm AssignmentPattern -> TypedTerm Pattern -> TypedTerm AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: assignmentPatternWithRight :: TypedTerm AssignmentPattern -> TypedTerm Expression -> TypedTerm AssignmentPattern
+ Hydra.Typescript.Dsl.Syntax: binaryExpression :: TypedTerm BinaryOperator -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionBinaryExpression :: TypedName BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionLeft :: TypedTerm BinaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionRight :: TypedTerm BinaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionWithLeft :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionWithOperator :: TypedTerm BinaryExpression -> TypedTerm BinaryOperator -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryExpressionWithRight :: TypedTerm BinaryExpression -> TypedTerm Expression -> TypedTerm BinaryExpression
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorAdd :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorAnd :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBinaryOperator :: TypedName BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBitwiseAnd :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBitwiseOr :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorBitwiseXor :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorDivide :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorExponentiate :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorGreaterThan :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorGreaterThanOrEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorIn :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorInstanceof :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorLeftShift :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorLessThan :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorLessThanOrEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorModulo :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorMultiply :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorNotEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorNullishCoalescing :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorOr :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorRightShift :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorStrictEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorStrictNotEqual :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorSubtract :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: binaryOperatorUnsignedRightShift :: TypedTerm BinaryOperator
+ Hydra.Typescript.Dsl.Syntax: callExpression :: TypedTerm Expression -> TypedTerm [Expression] -> TypedTerm Bool -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionArguments :: TypedTerm CallExpression -> TypedTerm [Expression]
+ Hydra.Typescript.Dsl.Syntax: callExpressionCallExpression :: TypedName CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionCallee :: TypedTerm CallExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: callExpressionOptional :: TypedTerm CallExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: callExpressionWithArguments :: TypedTerm CallExpression -> TypedTerm [Expression] -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionWithCallee :: TypedTerm CallExpression -> TypedTerm Expression -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: callExpressionWithOptional :: TypedTerm CallExpression -> TypedTerm Bool -> TypedTerm CallExpression
+ Hydra.Typescript.Dsl.Syntax: catchClause :: TypedTerm (Maybe Pattern) -> TypedTerm BlockStatement -> TypedTerm CatchClause
+ Hydra.Typescript.Dsl.Syntax: catchClauseBody :: TypedTerm CatchClause -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: catchClauseCatchClause :: TypedName CatchClause
+ Hydra.Typescript.Dsl.Syntax: catchClauseParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern)
+ Hydra.Typescript.Dsl.Syntax: catchClauseWithBody :: TypedTerm CatchClause -> TypedTerm BlockStatement -> TypedTerm CatchClause
+ Hydra.Typescript.Dsl.Syntax: catchClauseWithParam :: TypedTerm CatchClause -> TypedTerm (Maybe Pattern) -> TypedTerm CatchClause
+ Hydra.Typescript.Dsl.Syntax: classDeclaration :: TypedTerm Identifier -> TypedTerm (Maybe Expression) -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody
+ Hydra.Typescript.Dsl.Syntax: classDeclarationClassDeclaration :: TypedName ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationId :: TypedTerm ClassDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: classDeclarationSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithBody :: TypedTerm ClassDeclaration -> TypedTerm ClassBody -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithComments :: TypedTerm ClassDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsClassDeclarationWithComments :: TypedName ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsWithBody :: TypedTerm ClassDeclarationWithComments -> TypedTerm ClassDeclaration -> TypedTerm ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithCommentsWithComments :: TypedTerm ClassDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ClassDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithId :: TypedTerm ClassDeclaration -> TypedTerm Identifier -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: classDeclarationWithSuperClass :: TypedTerm ClassDeclaration -> TypedTerm (Maybe Expression) -> TypedTerm ClassDeclaration
+ Hydra.Typescript.Dsl.Syntax: commentBlock :: TypedTerm String -> TypedTerm Comment
+ Hydra.Typescript.Dsl.Syntax: commentComment :: TypedName Comment
+ Hydra.Typescript.Dsl.Syntax: commentDocumentation :: TypedTerm DocumentationComment -> TypedTerm Comment
+ Hydra.Typescript.Dsl.Syntax: commentLine :: TypedTerm String -> TypedTerm Comment
+ Hydra.Typescript.Dsl.Syntax: conditionalExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionConditionalExpression :: TypedName ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionTest :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionWithAlternate :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionWithConsequent :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: conditionalExpressionWithTest :: TypedTerm ConditionalExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression
+ Hydra.Typescript.Dsl.Syntax: doWhileStatement :: TypedTerm Statement -> TypedTerm Expression -> TypedTerm DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementBody :: TypedTerm DoWhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementDoWhileStatement :: TypedName DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementTest :: TypedTerm DoWhileStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementWithBody :: TypedTerm DoWhileStatement -> TypedTerm Statement -> TypedTerm DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: doWhileStatementWithTest :: TypedTerm DoWhileStatement -> TypedTerm Expression -> TypedTerm DoWhileStatement
+ Hydra.Typescript.Dsl.Syntax: documentationComment :: TypedTerm String -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationCommentDescription :: TypedTerm DocumentationComment -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: documentationCommentDocumentationComment :: TypedName DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationCommentTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag]
+ Hydra.Typescript.Dsl.Syntax: documentationCommentWithDescription :: TypedTerm DocumentationComment -> TypedTerm String -> TypedTerm DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationCommentWithTags :: TypedTerm DocumentationComment -> TypedTerm [DocumentationTag] -> TypedTerm DocumentationComment
+ Hydra.Typescript.Dsl.Syntax: documentationTag :: TypedTerm String -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe Identifier) -> TypedTerm String -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagDescription :: TypedTerm DocumentationTag -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: documentationTagDocumentationTag :: TypedName DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagName :: TypedTerm DocumentationTag -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: documentationTagParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier)
+ Hydra.Typescript.Dsl.Syntax: documentationTagType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression)
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithDescription :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithName :: TypedTerm DocumentationTag -> TypedTerm String -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithParamName :: TypedTerm DocumentationTag -> TypedTerm (Maybe Identifier) -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: documentationTagWithType :: TypedTerm DocumentationTag -> TypedTerm (Maybe TypeExpression) -> TypedTerm DocumentationTag
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclaration :: TypedTerm (Maybe Identifier) -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationExportAllDeclaration :: TypedName ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier)
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationWithExported :: TypedTerm ExportAllDeclaration -> TypedTerm (Maybe Identifier) -> TypedTerm ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportAllDeclarationWithSource :: TypedTerm ExportAllDeclaration -> TypedTerm StringLiteral -> TypedTerm ExportAllDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationAll :: TypedTerm ExportAllDeclaration -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationDeclaration :: TypedTerm Statement -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationDefault :: TypedTerm Expression -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationExportDeclaration :: TypedName ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportDeclarationNamed :: TypedTerm NamedExport -> TypedTerm ExportDeclaration
+ Hydra.Typescript.Dsl.Syntax: exportSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierExportSpecifier :: TypedName ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierWithExported :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: exportSpecifierWithLocal :: TypedTerm ExportSpecifier -> TypedTerm Identifier -> TypedTerm ExportSpecifier
+ Hydra.Typescript.Dsl.Syntax: expressionArray :: TypedTerm ArrayExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionArrow :: TypedTerm ArrowFunctionExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionAsExpression :: TypedTerm AsExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionAssignment :: TypedTerm AssignmentExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionAwait :: TypedTerm Expression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionBinary :: TypedTerm BinaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionCall :: TypedTerm CallExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionConditional :: TypedTerm ConditionalExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionExpression :: TypedName Expression
+ Hydra.Typescript.Dsl.Syntax: expressionFunction :: TypedTerm FunctionExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionIdentifier :: TypedTerm Identifier -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionLiteral :: TypedTerm Literal -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionMember :: TypedTerm MemberExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionNew :: TypedTerm CallExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionObject :: TypedTerm ObjectExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionParenthesized :: TypedTerm Expression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionSequence :: TypedTerm [Expression] -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionSpread :: TypedTerm SpreadElement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionThis :: TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionUnary :: TypedTerm UnaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: expressionYield :: TypedTerm (Maybe Expression) -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: forInLeftForInLeft :: TypedName ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInLeftPattern :: TypedTerm Pattern -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInLeftVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInStatement :: TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementBody :: TypedTerm ForInStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: forInStatementForInStatement :: TypedName ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forInStatementRight :: TypedTerm ForInStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: forInStatementWithBody :: TypedTerm ForInStatement -> TypedTerm Statement -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementWithLeft :: TypedTerm ForInStatement -> TypedTerm ForInLeft -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInStatementWithRight :: TypedTerm ForInStatement -> TypedTerm Expression -> TypedTerm ForInStatement
+ Hydra.Typescript.Dsl.Syntax: forInitExpression :: TypedTerm Expression -> TypedTerm ForInit
+ Hydra.Typescript.Dsl.Syntax: forInitForInit :: TypedName ForInit
+ Hydra.Typescript.Dsl.Syntax: forInitVariable :: TypedTerm VariableDeclaration -> TypedTerm ForInit
+ Hydra.Typescript.Dsl.Syntax: forOfStatement :: TypedTerm Bool -> TypedTerm ForInLeft -> TypedTerm Expression -> TypedTerm Statement -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementAwait :: TypedTerm ForOfStatement -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: forOfStatementBody :: TypedTerm ForOfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementForOfStatement :: TypedName ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft
+ Hydra.Typescript.Dsl.Syntax: forOfStatementRight :: TypedTerm ForOfStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithAwait :: TypedTerm ForOfStatement -> TypedTerm Bool -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithBody :: TypedTerm ForOfStatement -> TypedTerm Statement -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithLeft :: TypedTerm ForOfStatement -> TypedTerm ForInLeft -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forOfStatementWithRight :: TypedTerm ForOfStatement -> TypedTerm Expression -> TypedTerm ForOfStatement
+ Hydra.Typescript.Dsl.Syntax: forStatement :: TypedTerm (Maybe ForInit) -> TypedTerm (Maybe Expression) -> TypedTerm (Maybe Expression) -> TypedTerm Statement -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementBody :: TypedTerm ForStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: forStatementForStatement :: TypedName ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit)
+ Hydra.Typescript.Dsl.Syntax: forStatementTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: forStatementUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: forStatementWithBody :: TypedTerm ForStatement -> TypedTerm Statement -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementWithInit :: TypedTerm ForStatement -> TypedTerm (Maybe ForInit) -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementWithTest :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: forStatementWithUpdate :: TypedTerm ForStatement -> TypedTerm (Maybe Expression) -> TypedTerm ForStatement
+ Hydra.Typescript.Dsl.Syntax: functionDeclaration :: TypedTerm Identifier -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationFunctionDeclaration :: TypedName FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern]
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithAsync :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithBody :: TypedTerm FunctionDeclaration -> TypedTerm BlockStatement -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithComments :: TypedTerm FunctionDeclaration -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsFunctionDeclarationWithComments :: TypedName FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsWithBody :: TypedTerm FunctionDeclarationWithComments -> TypedTerm FunctionDeclaration -> TypedTerm FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithCommentsWithComments :: TypedTerm FunctionDeclarationWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm FunctionDeclarationWithComments
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithGenerator :: TypedTerm FunctionDeclaration -> TypedTerm Bool -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithId :: TypedTerm FunctionDeclaration -> TypedTerm Identifier -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionDeclarationWithParams :: TypedTerm FunctionDeclaration -> TypedTerm [Pattern] -> TypedTerm FunctionDeclaration
+ Hydra.Typescript.Dsl.Syntax: functionExpression :: TypedTerm (Maybe Identifier) -> TypedTerm [Pattern] -> TypedTerm BlockStatement -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionAsync :: TypedTerm FunctionExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionExpressionBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: functionExpressionFunctionExpression :: TypedName FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: functionExpressionId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier)
+ Hydra.Typescript.Dsl.Syntax: functionExpressionParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern]
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithAsync :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithBody :: TypedTerm FunctionExpression -> TypedTerm BlockStatement -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithGenerator :: TypedTerm FunctionExpression -> TypedTerm Bool -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithId :: TypedTerm FunctionExpression -> TypedTerm (Maybe Identifier) -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionExpressionWithParams :: TypedTerm FunctionExpression -> TypedTerm [Pattern] -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpression :: TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionFunctionTypeExpression :: TypedName FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression]
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter]
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionWithParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionWithReturnType :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: functionTypeExpressionWithTypeParameters :: TypedTerm FunctionTypeExpression -> TypedTerm [TypeParameter] -> TypedTerm FunctionTypeExpression
+ Hydra.Typescript.Dsl.Syntax: identifier :: TypedTerm String -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: identifierIdentifier :: TypedName Identifier
+ Hydra.Typescript.Dsl.Syntax: ifStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement)
+ Hydra.Typescript.Dsl.Syntax: ifStatementConsequent :: TypedTerm IfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: ifStatementIfStatement :: TypedName IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementTest :: TypedTerm IfStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: ifStatementWithAlternate :: TypedTerm IfStatement -> TypedTerm (Maybe Statement) -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementWithConsequent :: TypedTerm IfStatement -> TypedTerm Statement -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: ifStatementWithTest :: TypedTerm IfStatement -> TypedTerm Expression -> TypedTerm IfStatement
+ Hydra.Typescript.Dsl.Syntax: importClauseDefault :: TypedTerm ImportDefaultSpecifier -> TypedTerm ImportClause
+ Hydra.Typescript.Dsl.Syntax: importClauseImportClause :: TypedName ImportClause
+ Hydra.Typescript.Dsl.Syntax: importClauseNamed :: TypedTerm ImportSpecifier -> TypedTerm ImportClause
+ Hydra.Typescript.Dsl.Syntax: importClauseNamespace :: TypedTerm ImportNamespaceSpecifier -> TypedTerm ImportClause
+ Hydra.Typescript.Dsl.Syntax: importDeclaration :: TypedTerm [ImportClause] -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDeclarationImportDeclaration :: TypedName ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDeclarationSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: importDeclarationSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause]
+ Hydra.Typescript.Dsl.Syntax: importDeclarationWithSource :: TypedTerm ImportDeclaration -> TypedTerm StringLiteral -> TypedTerm ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDeclarationWithSpecifiers :: TypedTerm ImportDeclaration -> TypedTerm [ImportClause] -> TypedTerm ImportDeclaration
+ Hydra.Typescript.Dsl.Syntax: importDefaultSpecifier :: TypedTerm Identifier -> TypedTerm ImportDefaultSpecifier
+ Hydra.Typescript.Dsl.Syntax: importDefaultSpecifierImportDefaultSpecifier :: TypedName ImportDefaultSpecifier
+ Hydra.Typescript.Dsl.Syntax: importNamespaceSpecifier :: TypedTerm Identifier -> TypedTerm ImportNamespaceSpecifier
+ Hydra.Typescript.Dsl.Syntax: importNamespaceSpecifierImportNamespaceSpecifier :: TypedName ImportNamespaceSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifier :: TypedTerm Identifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierImportSpecifier :: TypedName ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierWithImported :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: importSpecifierWithLocal :: TypedTerm ImportSpecifier -> TypedTerm Identifier -> TypedTerm ImportSpecifier
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm [TypeExpression] -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression]
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationInterfaceDeclaration :: TypedName InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature]
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter]
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithExtends :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeExpression] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithMembers :: TypedTerm InterfaceDeclaration -> TypedTerm [PropertySignature] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithName :: TypedTerm InterfaceDeclaration -> TypedTerm Identifier -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: interfaceDeclarationWithTypeParameters :: TypedTerm InterfaceDeclaration -> TypedTerm [TypeParameter] -> TypedTerm InterfaceDeclaration
+ Hydra.Typescript.Dsl.Syntax: labeledStatement :: TypedTerm Identifier -> TypedTerm Statement -> TypedTerm LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementBody :: TypedTerm LabeledStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: labeledStatementLabeledStatement :: TypedName LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementWithBody :: TypedTerm LabeledStatement -> TypedTerm Statement -> TypedTerm LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: labeledStatementWithLabel :: TypedTerm LabeledStatement -> TypedTerm Identifier -> TypedTerm LabeledStatement
+ Hydra.Typescript.Dsl.Syntax: literalBigInt :: TypedTerm Integer -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalBoolean :: TypedTerm Bool -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalLiteral :: TypedName Literal
+ Hydra.Typescript.Dsl.Syntax: literalNull :: TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalNumber :: TypedTerm NumericLiteral -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalString :: TypedTerm StringLiteral -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalTemplate :: TypedTerm TemplateLiteral -> TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: literalUndefined :: TypedTerm Literal
+ Hydra.Typescript.Dsl.Syntax: memberExpression :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionComputed :: TypedTerm MemberExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: memberExpressionMemberExpression :: TypedName MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionObject :: TypedTerm MemberExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionOptional :: TypedTerm MemberExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: memberExpressionProperty :: TypedTerm MemberExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithComputed :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithObject :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithOptional :: TypedTerm MemberExpression -> TypedTerm Bool -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: memberExpressionWithProperty :: TypedTerm MemberExpression -> TypedTerm Expression -> TypedTerm MemberExpression
+ Hydra.Typescript.Dsl.Syntax: methodDefinition :: TypedTerm Expression -> TypedTerm FunctionExpression -> TypedTerm MethodKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionComputed :: TypedTerm MethodDefinition -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionKey :: TypedTerm MethodDefinition -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionMethodDefinition :: TypedName MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionStatic :: TypedTerm MethodDefinition -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithComputed :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithKey :: TypedTerm MethodDefinition -> TypedTerm Expression -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithKind :: TypedTerm MethodDefinition -> TypedTerm MethodKind -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithStatic :: TypedTerm MethodDefinition -> TypedTerm Bool -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodDefinitionWithValue :: TypedTerm MethodDefinition -> TypedTerm FunctionExpression -> TypedTerm MethodDefinition
+ Hydra.Typescript.Dsl.Syntax: methodKindConstructor :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindGet :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindMethod :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindMethodKind :: TypedName MethodKind
+ Hydra.Typescript.Dsl.Syntax: methodKindSet :: TypedTerm MethodKind
+ Hydra.Typescript.Dsl.Syntax: moduleItemExport :: TypedTerm ExportDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemImport :: TypedTerm ImportDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemInterface :: TypedTerm InterfaceDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemModuleItem :: TypedName ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemStatement :: TypedTerm Statement -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemTypeAlias :: TypedTerm TypeAliasDeclaration -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithComments :: TypedTerm ModuleItem -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsModuleItemWithComments :: TypedName ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsWithBody :: TypedTerm ModuleItemWithComments -> TypedTerm ModuleItem -> TypedTerm ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: moduleItemWithCommentsWithComments :: TypedTerm ModuleItemWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm ModuleItemWithComments
+ Hydra.Typescript.Dsl.Syntax: namedExport :: TypedTerm [ExportSpecifier] -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
+ Hydra.Typescript.Dsl.Syntax: namedExportNamedExport :: TypedName NamedExport
+ Hydra.Typescript.Dsl.Syntax: namedExportSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral)
+ Hydra.Typescript.Dsl.Syntax: namedExportSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier]
+ Hydra.Typescript.Dsl.Syntax: namedExportWithSource :: TypedTerm NamedExport -> TypedTerm (Maybe StringLiteral) -> TypedTerm NamedExport
+ Hydra.Typescript.Dsl.Syntax: namedExportWithSpecifiers :: TypedTerm NamedExport -> TypedTerm [ExportSpecifier] -> TypedTerm NamedExport
+ Hydra.Typescript.Dsl.Syntax: numericLiteralFloat :: TypedTerm Double -> TypedTerm NumericLiteral
+ Hydra.Typescript.Dsl.Syntax: numericLiteralInteger :: TypedTerm Int64 -> TypedTerm NumericLiteral
+ Hydra.Typescript.Dsl.Syntax: numericLiteralNumericLiteral :: TypedName NumericLiteral
+ Hydra.Typescript.Dsl.Syntax: objectPattern :: TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
+ Hydra.Typescript.Dsl.Syntax: objectPatternObjectPattern :: TypedName ObjectPattern
+ Hydra.Typescript.Dsl.Syntax: objectPatternProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty]
+ Hydra.Typescript.Dsl.Syntax: objectPatternPropertyObjectPatternProperty :: TypedName ObjectPatternProperty
+ Hydra.Typescript.Dsl.Syntax: objectPatternPropertyProperty :: TypedTerm Property -> TypedTerm ObjectPatternProperty
+ Hydra.Typescript.Dsl.Syntax: objectPatternPropertyRest :: TypedTerm RestElement -> TypedTerm ObjectPatternProperty
+ Hydra.Typescript.Dsl.Syntax: objectPatternWithProperties :: TypedTerm ObjectPattern -> TypedTerm [ObjectPatternProperty] -> TypedTerm ObjectPattern
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpression :: TypedTerm TypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression]
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionParameterizedTypeExpression :: TypedName ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionWithArguments :: TypedTerm ParameterizedTypeExpression -> TypedTerm [TypeExpression] -> TypedTerm ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: parameterizedTypeExpressionWithBase :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression -> TypedTerm ParameterizedTypeExpression
+ Hydra.Typescript.Dsl.Syntax: patternArray :: TypedTerm ArrayPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternAssignment :: TypedTerm AssignmentPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternIdentifier :: TypedTerm Identifier -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternObject :: TypedTerm ObjectPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternPattern :: TypedName Pattern
+ Hydra.Typescript.Dsl.Syntax: patternRest :: TypedTerm RestElement -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: patternTyped :: TypedTerm TypedPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: program :: TypedTerm [ModuleItem] -> TypedTerm SourceType -> TypedTerm Program
+ Hydra.Typescript.Dsl.Syntax: programBody :: TypedTerm Program -> TypedTerm [ModuleItem]
+ Hydra.Typescript.Dsl.Syntax: programProgram :: TypedName Program
+ Hydra.Typescript.Dsl.Syntax: programSourceType :: TypedTerm Program -> TypedTerm SourceType
+ Hydra.Typescript.Dsl.Syntax: programWithBody :: TypedTerm Program -> TypedTerm [ModuleItem] -> TypedTerm Program
+ Hydra.Typescript.Dsl.Syntax: programWithSourceType :: TypedTerm Program -> TypedTerm SourceType -> TypedTerm Program
+ Hydra.Typescript.Dsl.Syntax: property :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm PropertyKind -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyComputed :: TypedTerm Property -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertyKey :: TypedTerm Property -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: propertyKind :: TypedTerm Property -> TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindGet :: TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindInit :: TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindPropertyKind :: TypedName PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyKindSet :: TypedTerm PropertyKind
+ Hydra.Typescript.Dsl.Syntax: propertyProperty :: TypedName Property
+ Hydra.Typescript.Dsl.Syntax: propertyShorthand :: TypedTerm Property -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertySignature :: TypedTerm Identifier -> TypedTerm TypeExpression -> TypedTerm Bool -> TypedTerm Bool -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: propertySignatureName :: TypedTerm PropertySignature -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: propertySignatureOptional :: TypedTerm PropertySignature -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertySignaturePropertySignature :: TypedName PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureReadonly :: TypedTerm PropertySignature -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: propertySignatureType :: TypedTerm PropertySignature -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithComments :: TypedTerm PropertySignature -> TypedTerm (Maybe DocumentationComment) -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithName :: TypedTerm PropertySignature -> TypedTerm Identifier -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithOptional :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithReadonly :: TypedTerm PropertySignature -> TypedTerm Bool -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertySignatureWithType :: TypedTerm PropertySignature -> TypedTerm TypeExpression -> TypedTerm PropertySignature
+ Hydra.Typescript.Dsl.Syntax: propertyValue :: TypedTerm Property -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: propertyWithComputed :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithKey :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithKind :: TypedTerm Property -> TypedTerm PropertyKind -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithShorthand :: TypedTerm Property -> TypedTerm Bool -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: propertyWithValue :: TypedTerm Property -> TypedTerm Expression -> TypedTerm Property
+ Hydra.Typescript.Dsl.Syntax: restElement :: TypedTerm Pattern -> TypedTerm RestElement
+ Hydra.Typescript.Dsl.Syntax: restElementRestElement :: TypedName RestElement
+ Hydra.Typescript.Dsl.Syntax: sourceTypeModule :: TypedTerm SourceType
+ Hydra.Typescript.Dsl.Syntax: sourceTypeScript :: TypedTerm SourceType
+ Hydra.Typescript.Dsl.Syntax: sourceTypeSourceType :: TypedName SourceType
+ Hydra.Typescript.Dsl.Syntax: spreadElement :: TypedTerm Expression -> TypedTerm SpreadElement
+ Hydra.Typescript.Dsl.Syntax: spreadElementSpreadElement :: TypedName SpreadElement
+ Hydra.Typescript.Dsl.Syntax: statementBlock :: TypedTerm BlockStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementBreak :: TypedTerm BreakStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementClassDeclaration :: TypedTerm ClassDeclaration -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementContinue :: TypedTerm ContinueStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementDebugger :: TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementDoWhile :: TypedTerm DoWhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementEmpty :: TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementExpression :: TypedTerm Expression -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementFor :: TypedTerm ForStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementForIn :: TypedTerm ForInStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementForOf :: TypedTerm ForOfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementFunctionDeclaration :: TypedTerm FunctionDeclaration -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementIf :: TypedTerm IfStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementLabeled :: TypedTerm LabeledStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementReturn :: TypedTerm ReturnStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementStatement :: TypedName Statement
+ Hydra.Typescript.Dsl.Syntax: statementSwitch :: TypedTerm SwitchStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementThrow :: TypedTerm ThrowStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementTry :: TypedTerm TryStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementVariableDeclaration :: TypedTerm VariableDeclaration -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementWhile :: TypedTerm WhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementWithComments :: TypedTerm Statement -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsBody :: TypedTerm StatementWithComments -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment)
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsStatementWithComments :: TypedName StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsWithBody :: TypedTerm StatementWithComments -> TypedTerm Statement -> TypedTerm StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: statementWithCommentsWithComments :: TypedTerm StatementWithComments -> TypedTerm (Maybe DocumentationComment) -> TypedTerm StatementWithComments
+ Hydra.Typescript.Dsl.Syntax: stringLiteral :: TypedTerm String -> TypedTerm Bool -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: stringLiteralSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: stringLiteralStringLiteral :: TypedName StringLiteral
+ Hydra.Typescript.Dsl.Syntax: stringLiteralValue :: TypedTerm StringLiteral -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: stringLiteralWithSingleQuote :: TypedTerm StringLiteral -> TypedTerm Bool -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: stringLiteralWithValue :: TypedTerm StringLiteral -> TypedTerm String -> TypedTerm StringLiteral
+ Hydra.Typescript.Dsl.Syntax: switchCase :: TypedTerm (Maybe Expression) -> TypedTerm [Statement] -> TypedTerm SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchCaseConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement]
+ Hydra.Typescript.Dsl.Syntax: switchCaseSwitchCase :: TypedName SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchCaseTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: switchCaseWithConsequent :: TypedTerm SwitchCase -> TypedTerm [Statement] -> TypedTerm SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchCaseWithTest :: TypedTerm SwitchCase -> TypedTerm (Maybe Expression) -> TypedTerm SwitchCase
+ Hydra.Typescript.Dsl.Syntax: switchStatement :: TypedTerm Expression -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: switchStatementCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase]
+ Hydra.Typescript.Dsl.Syntax: switchStatementDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: switchStatementSwitchStatement :: TypedName SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: switchStatementWithCases :: TypedTerm SwitchStatement -> TypedTerm [SwitchCase] -> TypedTerm SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: switchStatementWithDiscriminant :: TypedTerm SwitchStatement -> TypedTerm Expression -> TypedTerm SwitchStatement
+ Hydra.Typescript.Dsl.Syntax: templateElement :: TypedTerm String -> TypedTerm Bool -> TypedTerm TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateElementTail :: TypedTerm TemplateElement -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: templateElementTemplateElement :: TypedName TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateElementValue :: TypedTerm TemplateElement -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: templateElementWithTail :: TypedTerm TemplateElement -> TypedTerm Bool -> TypedTerm TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateElementWithValue :: TypedTerm TemplateElement -> TypedTerm String -> TypedTerm TemplateElement
+ Hydra.Typescript.Dsl.Syntax: templateLiteral :: TypedTerm [TemplateElement] -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: templateLiteralExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression]
+ Hydra.Typescript.Dsl.Syntax: templateLiteralQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement]
+ Hydra.Typescript.Dsl.Syntax: templateLiteralTemplateLiteral :: TypedName TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: templateLiteralWithExpressions :: TypedTerm TemplateLiteral -> TypedTerm [Expression] -> TypedTerm TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: templateLiteralWithQuasis :: TypedTerm TemplateLiteral -> TypedTerm [TemplateElement] -> TypedTerm TemplateLiteral
+ Hydra.Typescript.Dsl.Syntax: throwStatement :: TypedTerm Expression -> TypedTerm ThrowStatement
+ Hydra.Typescript.Dsl.Syntax: throwStatementThrowStatement :: TypedName ThrowStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatement :: TypedTerm BlockStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement)
+ Hydra.Typescript.Dsl.Syntax: tryStatementHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause)
+ Hydra.Typescript.Dsl.Syntax: tryStatementTryStatement :: TypedName TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementWithBlock :: TypedTerm TryStatement -> TypedTerm BlockStatement -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementWithFinalizer :: TypedTerm TryStatement -> TypedTerm (Maybe BlockStatement) -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: tryStatementWithHandler :: TypedTerm TryStatement -> TypedTerm (Maybe CatchClause) -> TypedTerm TryStatement
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclaration :: TypedTerm Identifier -> TypedTerm [TypeParameter] -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationTypeAliasDeclaration :: TypedName TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter]
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationWithName :: TypedTerm TypeAliasDeclaration -> TypedTerm Identifier -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationWithType :: TypedTerm TypeAliasDeclaration -> TypedTerm TypeExpression -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAliasDeclarationWithTypeParameters :: TypedTerm TypeAliasDeclaration -> TypedTerm [TypeParameter] -> TypedTerm TypeAliasDeclaration
+ Hydra.Typescript.Dsl.Syntax: typeAnnotation :: TypedTerm TypeExpression -> TypedTerm TypeAnnotation
+ Hydra.Typescript.Dsl.Syntax: typeAnnotationTypeAnnotation :: TypedName TypeAnnotation
+ Hydra.Typescript.Dsl.Syntax: typeExpressionAny :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionArray :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionFunction :: TypedTerm FunctionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionIdentifier :: TypedTerm Identifier -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionIntersection :: TypedTerm IntersectionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionLiteral :: TypedTerm Literal -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionNever :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionObject :: TypedTerm ObjectTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionOptional :: TypedTerm TypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionParameterized :: TypedTerm ParameterizedTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionReadonly :: TypedTerm TypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionTuple :: TypedTerm TupleTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionTypeExpression :: TypedName TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionUnion :: TypedTerm UnionTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionUnknown :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeExpressionVoid :: TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typeParameter :: TypedTerm Identifier -> TypedTerm (Maybe TypeExpression) -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
+ Hydra.Typescript.Dsl.Syntax: typeParameterDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression)
+ Hydra.Typescript.Dsl.Syntax: typeParameterName :: TypedTerm TypeParameter -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: typeParameterTypeParameter :: TypedName TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterWithConstraint :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterWithDefault :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeExpression) -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typeParameterWithName :: TypedTerm TypeParameter -> TypedTerm Identifier -> TypedTerm TypeParameter
+ Hydra.Typescript.Dsl.Syntax: typedPattern :: TypedTerm Pattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternPattern :: TypedTerm TypedPattern -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternType :: TypedTerm TypedPattern -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: typedPatternTypedPattern :: TypedName TypedPattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternWithPattern :: TypedTerm TypedPattern -> TypedTerm Pattern -> TypedTerm TypedPattern
+ Hydra.Typescript.Dsl.Syntax: typedPatternWithType :: TypedTerm TypedPattern -> TypedTerm TypeExpression -> TypedTerm TypedPattern
+ Hydra.Typescript.Dsl.Syntax: unArrayTypeExpression :: TypedTerm ArrayTypeExpression -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: unIdentifier :: TypedTerm Identifier -> TypedTerm String
+ Hydra.Typescript.Dsl.Syntax: unImportDefaultSpecifier :: TypedTerm ImportDefaultSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: unImportNamespaceSpecifier :: TypedTerm ImportNamespaceSpecifier -> TypedTerm Identifier
+ Hydra.Typescript.Dsl.Syntax: unRestElement :: TypedTerm RestElement -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: unSpreadElement :: TypedTerm SpreadElement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: unThrowStatement :: TypedTerm ThrowStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: unTypeAnnotation :: TypedTerm TypeAnnotation -> TypedTerm TypeExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpression :: TypedTerm UnaryOperator -> TypedTerm Expression -> TypedTerm Bool -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionArgument :: TypedTerm UnaryExpression -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionUnaryExpression :: TypedName UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionWithArgument :: TypedTerm UnaryExpression -> TypedTerm Expression -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionWithOperator :: TypedTerm UnaryExpression -> TypedTerm UnaryOperator -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryExpressionWithPrefix :: TypedTerm UnaryExpression -> TypedTerm Bool -> TypedTerm UnaryExpression
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorBitwiseNot :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorDecrement :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorDelete :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorIncrement :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorNegate :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorNot :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorPlus :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorTypeof :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorUnaryOperator :: TypedName UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: unaryOperatorVoid :: TypedTerm UnaryOperator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaration :: TypedTerm VariableKind -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator]
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationVariableDeclaration :: TypedName VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationWithDeclarations :: TypedTerm VariableDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarationWithKind :: TypedTerm VariableDeclaration -> TypedTerm VariableKind -> TypedTerm VariableDeclaration
+ Hydra.Typescript.Dsl.Syntax: variableDeclarator :: TypedTerm Pattern -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorId :: TypedTerm VariableDeclarator -> TypedTerm Pattern
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression)
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorVariableDeclarator :: TypedName VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorWithId :: TypedTerm VariableDeclarator -> TypedTerm Pattern -> TypedTerm VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableDeclaratorWithInit :: TypedTerm VariableDeclarator -> TypedTerm (Maybe Expression) -> TypedTerm VariableDeclarator
+ Hydra.Typescript.Dsl.Syntax: variableKindConst :: TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableKindLet :: TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableKindVar :: TypedTerm VariableKind
+ Hydra.Typescript.Dsl.Syntax: variableKindVariableKind :: TypedName VariableKind
+ Hydra.Typescript.Dsl.Syntax: whileStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm WhileStatement
+ Hydra.Typescript.Dsl.Syntax: whileStatementBody :: TypedTerm WhileStatement -> TypedTerm Statement
+ Hydra.Typescript.Dsl.Syntax: whileStatementTest :: TypedTerm WhileStatement -> TypedTerm Expression
+ Hydra.Typescript.Dsl.Syntax: whileStatementWhileStatement :: TypedName WhileStatement
+ Hydra.Typescript.Dsl.Syntax: whileStatementWithBody :: TypedTerm WhileStatement -> TypedTerm Statement -> TypedTerm WhileStatement
+ Hydra.Typescript.Dsl.Syntax: whileStatementWithTest :: TypedTerm WhileStatement -> TypedTerm Expression -> TypedTerm WhileStatement
+ Hydra.Typescript.Language: typeScriptLanguage :: Language
+ Hydra.Typescript.Language: typeScriptReservedWords :: Set String
+ Hydra.Typescript.Operators: addOp :: Op
+ Hydra.Typescript.Operators: appOp :: Op
+ Hydra.Typescript.Operators: arrowOp :: Op
+ Hydra.Typescript.Operators: assignOp :: Op
+ Hydra.Typescript.Operators: bitwiseAndOp :: Op
+ Hydra.Typescript.Operators: bitwiseOrOp :: Op
+ Hydra.Typescript.Operators: bitwiseXorOp :: Op
+ Hydra.Typescript.Operators: colonOp :: Op
+ Hydra.Typescript.Operators: commaOp :: Op
+ Hydra.Typescript.Operators: defineOp :: Op
+ Hydra.Typescript.Operators: divideOp :: Op
+ Hydra.Typescript.Operators: equalOp :: Op
+ Hydra.Typescript.Operators: exponentiateOp :: Op
+ Hydra.Typescript.Operators: greaterThanOp :: Op
+ Hydra.Typescript.Operators: greaterThanOrEqualOp :: Op
+ Hydra.Typescript.Operators: inOp :: Op
+ Hydra.Typescript.Operators: instanceOfOp :: Op
+ Hydra.Typescript.Operators: leftShiftOp :: Op
+ Hydra.Typescript.Operators: lessThanOp :: Op
+ Hydra.Typescript.Operators: lessThanOrEqualOp :: Op
+ Hydra.Typescript.Operators: logicalAndOp :: Op
+ Hydra.Typescript.Operators: logicalOrOp :: Op
+ Hydra.Typescript.Operators: memberOp :: Op
+ Hydra.Typescript.Operators: moduloOp :: Op
+ Hydra.Typescript.Operators: multiplyOp :: Op
+ Hydra.Typescript.Operators: notEqualOp :: Op
+ Hydra.Typescript.Operators: nullishCoalescingOp :: Op
+ Hydra.Typescript.Operators: optionalChainOp :: Op
+ Hydra.Typescript.Operators: rightShiftOp :: Op
+ Hydra.Typescript.Operators: strictEqualOp :: Op
+ Hydra.Typescript.Operators: strictNotEqualOp :: Op
+ Hydra.Typescript.Operators: subtractOp :: Op
+ Hydra.Typescript.Operators: ternaryOp :: Op
+ Hydra.Typescript.Operators: unsignedRightShiftOp :: Op
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: addExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: andExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: anyType :: TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayExpr :: [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayPattern :: [Maybe Pattern] -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrayType :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowBlockExpr :: [String] -> [Statement] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: arrowExpr :: [String] -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: assignExpr :: Pattern -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncArrowExpr :: [String] -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: awaitExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: bigIntLit :: Integer -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: blockComment :: String -> Comment
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: blockStmt :: [Statement] -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: boolExpr :: Bool -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: boolLit :: Bool -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: breakStmt :: Maybe String -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: callExpr :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: catchClause :: Maybe Pattern -> [Statement] -> CatchClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: classDeclStmt :: ClassDeclaration -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: computedMemberExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: condExpr :: Expression -> Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: constDecl :: String -> Maybe Expression -> VariableDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: constructorDef :: [String] -> [Statement] -> MethodDefinition
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: continueStmt :: Maybe String -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: debuggerStmt :: Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultExportDecl :: Expression -> ExportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: defaultPattern :: String -> Expression -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: divExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: docComment :: String -> [DocumentationTag] -> Comment
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: emptyStmt :: Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: eqExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: exportDeclStmt :: Statement -> ExportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: exportItem :: ExportDeclaration -> ModuleItem
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: exprStmt :: Expression -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: floatExpr :: Double -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: floatLit :: Double -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: funcDeclStmt :: FunctionDeclaration -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: ident :: String -> Identifier
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: identExpr :: String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: identPattern :: String -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: identType :: String -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: ifStmt :: Expression -> Statement -> Maybe Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importDecl :: [ImportClause] -> String -> ImportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importDefault :: String -> ImportClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importItem :: ImportDeclaration -> ModuleItem
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamed :: String -> String -> ImportClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: importNamespace :: String -> ImportClause
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: intExpr :: Int64 -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: intLit :: Int64 -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: letDecl :: String -> Maybe Expression -> VariableDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: lineComment :: String -> Comment
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: litExpr :: Literal -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: memberExpr :: Expression -> String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: methodDef :: String -> [String] -> [Statement] -> MethodDefinition
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: moduleProgram :: [ModuleItem] -> Program
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: mulExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: negateExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: neqExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: neverType :: TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: newExpr :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: notExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: nullExpr :: Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: nullLit :: Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: objectExpr :: [(String, Expression)] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: objectPattern :: [Pattern] -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalCallExpr :: Expression -> [Expression] -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalMemberExpr :: Expression -> String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: optionalType :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: orExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: paramType :: TypeExpression -> [TypeExpression] -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: parenExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: qualifiedName :: [String] -> QualifiedName
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: restPattern :: String -> Pattern
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: returnStmt :: Maybe Expression -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: returnsTag :: Maybe TypeExpression -> String -> DocumentationTag
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: scriptProgram :: [ModuleItem] -> Program
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: spreadExpr :: Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stmtItem :: Statement -> ModuleItem
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stringExpr :: String -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLit :: String -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: stringLitSingle :: String -> Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: subExpr :: Expression -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: switchCase :: Maybe Expression -> [Statement] -> SwitchCase
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: switchStmt :: Expression -> [SwitchCase] -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: thisExpr :: Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: throwStmt :: Expression -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: typeTag :: TypeExpression -> DocumentationTag
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: unaryExpr :: UnaryOperator -> Expression -> Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedExpr :: Expression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: undefinedLit :: Literal
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: unionType :: [TypeExpression] -> TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: varDecl :: String -> Maybe Expression -> VariableDeclaration
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: varDeclStmt :: VariableDeclaration -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: voidType :: TypeExpression
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: whileStmt :: Expression -> Statement -> Statement
+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers: yieldExpr :: Maybe Expression -> Expression
+ Hydra.Typescript.Serde: allDigits :: [Int] -> Bool
+ Hydra.Typescript.Serde: arrayElementToExpr :: ArrayElement -> Expr
+ Hydra.Typescript.Serde: arrayExpressionToExpr :: [ArrayElement] -> Expr
+ Hydra.Typescript.Serde: arrayPatternToExpr :: [Maybe Pattern] -> Expr
+ Hydra.Typescript.Serde: arrowFunctionExpressionToExpr :: ArrowFunctionExpression -> Expr
+ Hydra.Typescript.Serde: assignmentExpressionToExpr :: AssignmentExpression -> Expr
+ Hydra.Typescript.Serde: assignmentOperatorToString :: AssignmentOperator -> String
+ Hydra.Typescript.Serde: assignmentPatternToExpr :: AssignmentPattern -> Expr
+ Hydra.Typescript.Serde: binaryExpressionToExpr :: BinaryExpression -> Expr
+ Hydra.Typescript.Serde: binaryOperatorToExpr :: BinaryOperator -> Op
+ Hydra.Typescript.Serde: blockStatementToExpr :: [Statement] -> Expr
+ Hydra.Typescript.Serde: breakStatementToExpr :: Maybe Identifier -> Expr
+ Hydra.Typescript.Serde: callExpressionToExpr :: CallExpression -> Expr
+ Hydra.Typescript.Serde: catchClauseToExpr :: CatchClause -> Expr
+ Hydra.Typescript.Serde: classDeclarationToExpr :: ClassDeclaration -> Expr
+ Hydra.Typescript.Serde: classDeclarationWithCommentsToExpr :: ClassDeclarationWithComments -> Expr
+ Hydra.Typescript.Serde: conditionalExpressionToExpr :: ConditionalExpression -> Expr
+ Hydra.Typescript.Serde: continueStatementToExpr :: Maybe Identifier -> Expr
+ Hydra.Typescript.Serde: doWhileStatementToExpr :: DoWhileStatement -> Expr
+ Hydra.Typescript.Serde: documentationCommentToExpr :: DocumentationComment -> Expr
+ Hydra.Typescript.Serde: documentationTagToLine :: DocumentationTag -> String
+ Hydra.Typescript.Serde: escapeString :: String -> Bool -> String
+ Hydra.Typescript.Serde: exportAllToExpr :: ExportAllDeclaration -> Expr
+ Hydra.Typescript.Serde: exportDeclarationToExpr :: ExportDeclaration -> Expr
+ Hydra.Typescript.Serde: exportSpecifierToExpr :: ExportSpecifier -> Expr
+ Hydra.Typescript.Serde: expressionToExpr :: Expression -> Expr
+ Hydra.Typescript.Serde: forInStatementToExpr :: ForInStatement -> Expr
+ Hydra.Typescript.Serde: forOfStatementToExpr :: ForOfStatement -> Expr
+ Hydra.Typescript.Serde: forStatementToExpr :: ForStatement -> Expr
+ Hydra.Typescript.Serde: formatImportSpecifiers :: [Expr] -> Expr
+ Hydra.Typescript.Serde: functionDeclarationToExpr :: FunctionDeclaration -> Expr
+ Hydra.Typescript.Serde: functionDeclarationWithCommentsToExpr :: FunctionDeclarationWithComments -> Expr
+ Hydra.Typescript.Serde: functionExpressionToExpr :: FunctionExpression -> Expr
+ Hydra.Typescript.Serde: identifierToExpr :: Identifier -> Expr
+ Hydra.Typescript.Serde: ifStatementToExpr :: IfStatement -> Expr
+ Hydra.Typescript.Serde: importDeclarationToExpr :: ImportDeclaration -> Expr
+ Hydra.Typescript.Serde: importSpecifierToExpr :: ImportClause -> Expr
+ Hydra.Typescript.Serde: isKernelTypeVarName :: String -> Bool
+ Hydra.Typescript.Serde: labeledStatementToExpr :: LabeledStatement -> Expr
+ Hydra.Typescript.Serde: literalToExpr :: Literal -> Expr
+ Hydra.Typescript.Serde: memberExpressionToExpr :: MemberExpression -> Expr
+ Hydra.Typescript.Serde: methodDefinitionToExpr :: MethodDefinition -> Expr
+ Hydra.Typescript.Serde: moduleItemToExpr :: ModuleItem -> Expr
+ Hydra.Typescript.Serde: moduleItemWithCommentsToExpr :: ModuleItemWithComments -> Expr
+ Hydra.Typescript.Serde: namedExportToExpr :: NamedExport -> Expr
+ Hydra.Typescript.Serde: numericLiteralToExpr :: NumericLiteral -> Expr
+ Hydra.Typescript.Serde: objectExpressionToExpr :: [Property] -> Expr
+ Hydra.Typescript.Serde: objectPatternPropertyToExpr :: ObjectPatternProperty -> Expr
+ Hydra.Typescript.Serde: objectPatternToExpr :: ObjectPattern -> Expr
+ Hydra.Typescript.Serde: patternToExpr :: Pattern -> Expr
+ Hydra.Typescript.Serde: patternToString :: Pattern -> String
+ Hydra.Typescript.Serde: programToExpr :: Program -> Expr
+ Hydra.Typescript.Serde: propertyToExpr :: Property -> Expr
+ Hydra.Typescript.Serde: returnStatementToExpr :: Maybe Expression -> Expr
+ Hydra.Typescript.Serde: statementToExpr :: Statement -> Expr
+ Hydra.Typescript.Serde: stringLiteralToExpr :: StringLiteral -> Expr
+ Hydra.Typescript.Serde: switchCaseToExpr :: SwitchCase -> Expr
+ Hydra.Typescript.Serde: switchStatementToExpr :: SwitchStatement -> Expr
+ Hydra.Typescript.Serde: templateLiteralToExpr :: TemplateLiteral -> Expr
+ Hydra.Typescript.Serde: throwStatementToExpr :: ThrowStatement -> Expr
+ Hydra.Typescript.Serde: toLineComment :: String -> String
+ Hydra.Typescript.Serde: toTypeScriptComments :: String -> [DocumentationTag] -> String
+ Hydra.Typescript.Serde: tryStatementToExpr :: TryStatement -> Expr
+ Hydra.Typescript.Serde: tsTypeExpressionToString :: TypeExpression -> String
+ Hydra.Typescript.Serde: typeExpressionToString :: TypeExpression -> String
+ Hydra.Typescript.Serde: typedPatternToExpr :: TypedPattern -> Expr
+ Hydra.Typescript.Serde: unaryExpressionToExpr :: UnaryExpression -> Expr
+ Hydra.Typescript.Serde: unaryOperatorToString :: UnaryOperator -> String
+ Hydra.Typescript.Serde: variableDeclarationToExpr :: VariableDeclaration -> Expr
+ Hydra.Typescript.Serde: variableDeclaratorToExpr :: VariableDeclarator -> Expr
+ Hydra.Typescript.Serde: variableKindToExpr :: VariableKind -> Expr
+ Hydra.Typescript.Serde: whileStatementToExpr :: WhileStatement -> Expr
+ Hydra.Typescript.Syntax: ArrayElementExpression :: Expression -> ArrayElement
+ Hydra.Typescript.Syntax: ArrayElementHole :: ArrayElement
+ Hydra.Typescript.Syntax: ArrayElementSpread :: SpreadElement -> ArrayElement
+ Hydra.Typescript.Syntax: ArrayTypeExpression :: TypeExpression -> ArrayTypeExpression
+ Hydra.Typescript.Syntax: ArrowFunctionBodyBlock :: BlockStatement -> ArrowFunctionBody
+ Hydra.Typescript.Syntax: ArrowFunctionBodyExpression :: Expression -> ArrowFunctionBody
+ Hydra.Typescript.Syntax: ArrowFunctionExpression :: [Pattern] -> ArrowFunctionBody -> Bool -> ArrowFunctionExpression
+ Hydra.Typescript.Syntax: AsExpression :: Expression -> TypeExpression -> AsExpression
+ Hydra.Typescript.Syntax: AssignmentExpression :: AssignmentOperator -> Pattern -> Expression -> AssignmentExpression
+ Hydra.Typescript.Syntax: AssignmentOperatorAddAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorAndAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorBitwiseAndAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorBitwiseOrAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorBitwiseXorAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorDivideAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorExponentiateAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorLeftShiftAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorModuloAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorMultiplyAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorNullishAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorOrAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorRightShiftAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorSubtractAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentOperatorUnsignedRightShiftAssign :: AssignmentOperator
+ Hydra.Typescript.Syntax: AssignmentPattern :: Pattern -> Expression -> AssignmentPattern
+ Hydra.Typescript.Syntax: BinaryExpression :: BinaryOperator -> Expression -> Expression -> BinaryExpression
+ Hydra.Typescript.Syntax: BinaryOperatorAdd :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorAnd :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorBitwiseAnd :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorBitwiseOr :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorBitwiseXor :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorDivide :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorExponentiate :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorGreaterThan :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorGreaterThanOrEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorIn :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorInstanceof :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorLeftShift :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorLessThan :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorLessThanOrEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorModulo :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorMultiply :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorNotEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorNullishCoalescing :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorOr :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorRightShift :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorStrictEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorStrictNotEqual :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorSubtract :: BinaryOperator
+ Hydra.Typescript.Syntax: BinaryOperatorUnsignedRightShift :: BinaryOperator
+ Hydra.Typescript.Syntax: CallExpression :: Expression -> [Expression] -> Bool -> CallExpression
+ Hydra.Typescript.Syntax: CatchClause :: Maybe Pattern -> BlockStatement -> CatchClause
+ Hydra.Typescript.Syntax: ClassDeclaration :: Identifier -> Maybe Expression -> ClassBody -> ClassDeclaration
+ Hydra.Typescript.Syntax: ClassDeclarationWithComments :: ClassDeclaration -> Maybe DocumentationComment -> ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: CommentBlock :: String -> Comment
+ Hydra.Typescript.Syntax: CommentDocumentation :: DocumentationComment -> Comment
+ Hydra.Typescript.Syntax: CommentLine :: String -> Comment
+ Hydra.Typescript.Syntax: ConditionalExpression :: Expression -> Expression -> Expression -> ConditionalExpression
+ Hydra.Typescript.Syntax: DoWhileStatement :: Statement -> Expression -> DoWhileStatement
+ Hydra.Typescript.Syntax: DocumentationComment :: String -> [DocumentationTag] -> DocumentationComment
+ Hydra.Typescript.Syntax: DocumentationTag :: String -> Maybe TypeExpression -> Maybe Identifier -> String -> DocumentationTag
+ Hydra.Typescript.Syntax: ExportAllDeclaration :: Maybe Identifier -> StringLiteral -> ExportAllDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationAll :: ExportAllDeclaration -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationDeclaration :: Statement -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationDefault :: Expression -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportDeclarationNamed :: NamedExport -> ExportDeclaration
+ Hydra.Typescript.Syntax: ExportSpecifier :: Identifier -> Identifier -> ExportSpecifier
+ Hydra.Typescript.Syntax: ExpressionArray :: ArrayExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionArrow :: ArrowFunctionExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionAsExpression :: AsExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionAssignment :: AssignmentExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionAwait :: Expression -> Expression
+ Hydra.Typescript.Syntax: ExpressionBinary :: BinaryExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionCall :: CallExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionConditional :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionFunction :: FunctionExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionIdentifier :: Identifier -> Expression
+ Hydra.Typescript.Syntax: ExpressionLiteral :: Literal -> Expression
+ Hydra.Typescript.Syntax: ExpressionMember :: MemberExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionNew :: CallExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionObject :: ObjectExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionParenthesized :: Expression -> Expression
+ Hydra.Typescript.Syntax: ExpressionSequence :: [Expression] -> Expression
+ Hydra.Typescript.Syntax: ExpressionSpread :: SpreadElement -> Expression
+ Hydra.Typescript.Syntax: ExpressionThis :: Expression
+ Hydra.Typescript.Syntax: ExpressionUnary :: UnaryExpression -> Expression
+ Hydra.Typescript.Syntax: ExpressionYield :: Maybe Expression -> Expression
+ Hydra.Typescript.Syntax: ForInLeftPattern :: Pattern -> ForInLeft
+ Hydra.Typescript.Syntax: ForInLeftVariable :: VariableDeclaration -> ForInLeft
+ Hydra.Typescript.Syntax: ForInStatement :: ForInLeft -> Expression -> Statement -> ForInStatement
+ Hydra.Typescript.Syntax: ForInitExpression :: Expression -> ForInit
+ Hydra.Typescript.Syntax: ForInitVariable :: VariableDeclaration -> ForInit
+ Hydra.Typescript.Syntax: ForOfStatement :: Bool -> ForInLeft -> Expression -> Statement -> ForOfStatement
+ Hydra.Typescript.Syntax: ForStatement :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> ForStatement
+ Hydra.Typescript.Syntax: FunctionDeclaration :: Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionDeclaration
+ Hydra.Typescript.Syntax: FunctionDeclarationWithComments :: FunctionDeclaration -> Maybe DocumentationComment -> FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: FunctionExpression :: Maybe Identifier -> [Pattern] -> BlockStatement -> Bool -> Bool -> FunctionExpression
+ Hydra.Typescript.Syntax: FunctionTypeExpression :: [TypeParameter] -> [TypeExpression] -> TypeExpression -> FunctionTypeExpression
+ Hydra.Typescript.Syntax: Identifier :: String -> Identifier
+ Hydra.Typescript.Syntax: IfStatement :: Expression -> Statement -> Maybe Statement -> IfStatement
+ Hydra.Typescript.Syntax: ImportClauseDefault :: ImportDefaultSpecifier -> ImportClause
+ Hydra.Typescript.Syntax: ImportClauseNamed :: ImportSpecifier -> ImportClause
+ Hydra.Typescript.Syntax: ImportClauseNamespace :: ImportNamespaceSpecifier -> ImportClause
+ Hydra.Typescript.Syntax: ImportDeclaration :: [ImportClause] -> StringLiteral -> ImportDeclaration
+ Hydra.Typescript.Syntax: ImportDefaultSpecifier :: Identifier -> ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: ImportNamespaceSpecifier :: Identifier -> ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: ImportSpecifier :: Identifier -> Identifier -> ImportSpecifier
+ Hydra.Typescript.Syntax: InterfaceDeclaration :: Identifier -> [TypeParameter] -> [TypeExpression] -> [PropertySignature] -> InterfaceDeclaration
+ Hydra.Typescript.Syntax: LabeledStatement :: Identifier -> Statement -> LabeledStatement
+ Hydra.Typescript.Syntax: LiteralBigInt :: Integer -> Literal
+ Hydra.Typescript.Syntax: LiteralBoolean :: Bool -> Literal
+ Hydra.Typescript.Syntax: LiteralNull :: Literal
+ Hydra.Typescript.Syntax: LiteralNumber :: NumericLiteral -> Literal
+ Hydra.Typescript.Syntax: LiteralString :: StringLiteral -> Literal
+ Hydra.Typescript.Syntax: LiteralTemplate :: TemplateLiteral -> Literal
+ Hydra.Typescript.Syntax: LiteralUndefined :: Literal
+ Hydra.Typescript.Syntax: MemberExpression :: Expression -> Expression -> Bool -> Bool -> MemberExpression
+ Hydra.Typescript.Syntax: MethodDefinition :: Expression -> FunctionExpression -> MethodKind -> Bool -> Bool -> MethodDefinition
+ Hydra.Typescript.Syntax: MethodKindConstructor :: MethodKind
+ Hydra.Typescript.Syntax: MethodKindGet :: MethodKind
+ Hydra.Typescript.Syntax: MethodKindMethod :: MethodKind
+ Hydra.Typescript.Syntax: MethodKindSet :: MethodKind
+ Hydra.Typescript.Syntax: ModuleItemExport :: ExportDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemImport :: ImportDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemInterface :: InterfaceDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemStatement :: Statement -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemTypeAlias :: TypeAliasDeclaration -> ModuleItem
+ Hydra.Typescript.Syntax: ModuleItemWithComments :: ModuleItem -> Maybe DocumentationComment -> ModuleItemWithComments
+ Hydra.Typescript.Syntax: NamedExport :: [ExportSpecifier] -> Maybe StringLiteral -> NamedExport
+ Hydra.Typescript.Syntax: NumericLiteralFloat :: Double -> NumericLiteral
+ Hydra.Typescript.Syntax: NumericLiteralInteger :: Int64 -> NumericLiteral
+ Hydra.Typescript.Syntax: ObjectPattern :: [ObjectPatternProperty] -> ObjectPattern
+ Hydra.Typescript.Syntax: ObjectPatternPropertyProperty :: Property -> ObjectPatternProperty
+ Hydra.Typescript.Syntax: ObjectPatternPropertyRest :: RestElement -> ObjectPatternProperty
+ Hydra.Typescript.Syntax: ParameterizedTypeExpression :: TypeExpression -> [TypeExpression] -> ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: PatternArray :: ArrayPattern -> Pattern
+ Hydra.Typescript.Syntax: PatternAssignment :: AssignmentPattern -> Pattern
+ Hydra.Typescript.Syntax: PatternIdentifier :: Identifier -> Pattern
+ Hydra.Typescript.Syntax: PatternObject :: ObjectPattern -> Pattern
+ Hydra.Typescript.Syntax: PatternRest :: RestElement -> Pattern
+ Hydra.Typescript.Syntax: PatternTyped :: TypedPattern -> Pattern
+ Hydra.Typescript.Syntax: Program :: [ModuleItem] -> SourceType -> Program
+ Hydra.Typescript.Syntax: Property :: Expression -> Expression -> PropertyKind -> Bool -> Bool -> Property
+ Hydra.Typescript.Syntax: PropertyKindGet :: PropertyKind
+ Hydra.Typescript.Syntax: PropertyKindInit :: PropertyKind
+ Hydra.Typescript.Syntax: PropertyKindSet :: PropertyKind
+ Hydra.Typescript.Syntax: PropertySignature :: Identifier -> TypeExpression -> Bool -> Bool -> Maybe DocumentationComment -> PropertySignature
+ Hydra.Typescript.Syntax: RestElement :: Pattern -> RestElement
+ Hydra.Typescript.Syntax: SourceTypeModule :: SourceType
+ Hydra.Typescript.Syntax: SourceTypeScript :: SourceType
+ Hydra.Typescript.Syntax: SpreadElement :: Expression -> SpreadElement
+ Hydra.Typescript.Syntax: StatementBlock :: BlockStatement -> Statement
+ Hydra.Typescript.Syntax: StatementBreak :: BreakStatement -> Statement
+ Hydra.Typescript.Syntax: StatementClassDeclaration :: ClassDeclaration -> Statement
+ Hydra.Typescript.Syntax: StatementContinue :: ContinueStatement -> Statement
+ Hydra.Typescript.Syntax: StatementDebugger :: Statement
+ Hydra.Typescript.Syntax: StatementDoWhile :: DoWhileStatement -> Statement
+ Hydra.Typescript.Syntax: StatementEmpty :: Statement
+ Hydra.Typescript.Syntax: StatementExpression :: Expression -> Statement
+ Hydra.Typescript.Syntax: StatementFor :: ForStatement -> Statement
+ Hydra.Typescript.Syntax: StatementForIn :: ForInStatement -> Statement
+ Hydra.Typescript.Syntax: StatementForOf :: ForOfStatement -> Statement
+ Hydra.Typescript.Syntax: StatementFunctionDeclaration :: FunctionDeclaration -> Statement
+ Hydra.Typescript.Syntax: StatementIf :: IfStatement -> Statement
+ Hydra.Typescript.Syntax: StatementLabeled :: LabeledStatement -> Statement
+ Hydra.Typescript.Syntax: StatementReturn :: ReturnStatement -> Statement
+ Hydra.Typescript.Syntax: StatementSwitch :: SwitchStatement -> Statement
+ Hydra.Typescript.Syntax: StatementThrow :: ThrowStatement -> Statement
+ Hydra.Typescript.Syntax: StatementTry :: TryStatement -> Statement
+ Hydra.Typescript.Syntax: StatementVariableDeclaration :: VariableDeclaration -> Statement
+ Hydra.Typescript.Syntax: StatementWhile :: WhileStatement -> Statement
+ Hydra.Typescript.Syntax: StatementWithComments :: Statement -> Maybe DocumentationComment -> StatementWithComments
+ Hydra.Typescript.Syntax: StringLiteral :: String -> Bool -> StringLiteral
+ Hydra.Typescript.Syntax: SwitchCase :: Maybe Expression -> [Statement] -> SwitchCase
+ Hydra.Typescript.Syntax: SwitchStatement :: Expression -> [SwitchCase] -> SwitchStatement
+ Hydra.Typescript.Syntax: TemplateElement :: String -> Bool -> TemplateElement
+ Hydra.Typescript.Syntax: TemplateLiteral :: [TemplateElement] -> [Expression] -> TemplateLiteral
+ Hydra.Typescript.Syntax: ThrowStatement :: Expression -> ThrowStatement
+ Hydra.Typescript.Syntax: TryStatement :: BlockStatement -> Maybe CatchClause -> Maybe BlockStatement -> TryStatement
+ Hydra.Typescript.Syntax: TypeAliasDeclaration :: Identifier -> [TypeParameter] -> TypeExpression -> TypeAliasDeclaration
+ Hydra.Typescript.Syntax: TypeAnnotation :: TypeExpression -> TypeAnnotation
+ Hydra.Typescript.Syntax: TypeExpressionAny :: TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionArray :: ArrayTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionFunction :: FunctionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionIdentifier :: Identifier -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionIntersection :: IntersectionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionLiteral :: Literal -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionNever :: TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionObject :: ObjectTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionOptional :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionParameterized :: ParameterizedTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionReadonly :: TypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionTuple :: TupleTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionUnion :: UnionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionUnknown :: TypeExpression
+ Hydra.Typescript.Syntax: TypeExpressionVoid :: TypeExpression
+ Hydra.Typescript.Syntax: TypeParameter :: Identifier -> Maybe TypeExpression -> Maybe TypeExpression -> TypeParameter
+ Hydra.Typescript.Syntax: TypedPattern :: Pattern -> TypeExpression -> TypedPattern
+ Hydra.Typescript.Syntax: UnaryExpression :: UnaryOperator -> Expression -> Bool -> UnaryExpression
+ Hydra.Typescript.Syntax: UnaryOperatorBitwiseNot :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorDecrement :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorDelete :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorIncrement :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorNegate :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorNot :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorPlus :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorTypeof :: UnaryOperator
+ Hydra.Typescript.Syntax: UnaryOperatorVoid :: UnaryOperator
+ Hydra.Typescript.Syntax: VariableDeclaration :: VariableKind -> [VariableDeclarator] -> VariableDeclaration
+ Hydra.Typescript.Syntax: VariableDeclarator :: Pattern -> Maybe Expression -> VariableDeclarator
+ Hydra.Typescript.Syntax: VariableKindConst :: VariableKind
+ Hydra.Typescript.Syntax: VariableKindLet :: VariableKind
+ Hydra.Typescript.Syntax: VariableKindVar :: VariableKind
+ Hydra.Typescript.Syntax: WhileStatement :: Expression -> Statement -> WhileStatement
+ Hydra.Typescript.Syntax: [arrowFunctionExpressionAsync] :: ArrowFunctionExpression -> Bool
+ Hydra.Typescript.Syntax: [arrowFunctionExpressionBody] :: ArrowFunctionExpression -> ArrowFunctionBody
+ Hydra.Typescript.Syntax: [arrowFunctionExpressionParams] :: ArrowFunctionExpression -> [Pattern]
+ Hydra.Typescript.Syntax: [asExpressionExpression] :: AsExpression -> Expression
+ Hydra.Typescript.Syntax: [asExpressionType] :: AsExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [assignmentExpressionLeft] :: AssignmentExpression -> Pattern
+ Hydra.Typescript.Syntax: [assignmentExpressionOperator] :: AssignmentExpression -> AssignmentOperator
+ Hydra.Typescript.Syntax: [assignmentExpressionRight] :: AssignmentExpression -> Expression
+ Hydra.Typescript.Syntax: [assignmentPatternLeft] :: AssignmentPattern -> Pattern
+ Hydra.Typescript.Syntax: [assignmentPatternRight] :: AssignmentPattern -> Expression
+ Hydra.Typescript.Syntax: [binaryExpressionLeft] :: BinaryExpression -> Expression
+ Hydra.Typescript.Syntax: [binaryExpressionOperator] :: BinaryExpression -> BinaryOperator
+ Hydra.Typescript.Syntax: [binaryExpressionRight] :: BinaryExpression -> Expression
+ Hydra.Typescript.Syntax: [callExpressionArguments] :: CallExpression -> [Expression]
+ Hydra.Typescript.Syntax: [callExpressionCallee] :: CallExpression -> Expression
+ Hydra.Typescript.Syntax: [callExpressionOptional] :: CallExpression -> Bool
+ Hydra.Typescript.Syntax: [catchClauseBody] :: CatchClause -> BlockStatement
+ Hydra.Typescript.Syntax: [catchClauseParam] :: CatchClause -> Maybe Pattern
+ Hydra.Typescript.Syntax: [classDeclarationBody] :: ClassDeclaration -> ClassBody
+ Hydra.Typescript.Syntax: [classDeclarationId] :: ClassDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [classDeclarationSuperClass] :: ClassDeclaration -> Maybe Expression
+ Hydra.Typescript.Syntax: [classDeclarationWithCommentsBody] :: ClassDeclarationWithComments -> ClassDeclaration
+ Hydra.Typescript.Syntax: [classDeclarationWithCommentsComments] :: ClassDeclarationWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [conditionalExpressionAlternate] :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: [conditionalExpressionConsequent] :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: [conditionalExpressionTest] :: ConditionalExpression -> Expression
+ Hydra.Typescript.Syntax: [doWhileStatementBody] :: DoWhileStatement -> Statement
+ Hydra.Typescript.Syntax: [doWhileStatementTest] :: DoWhileStatement -> Expression
+ Hydra.Typescript.Syntax: [documentationCommentDescription] :: DocumentationComment -> String
+ Hydra.Typescript.Syntax: [documentationCommentTags] :: DocumentationComment -> [DocumentationTag]
+ Hydra.Typescript.Syntax: [documentationTagDescription] :: DocumentationTag -> String
+ Hydra.Typescript.Syntax: [documentationTagName] :: DocumentationTag -> String
+ Hydra.Typescript.Syntax: [documentationTagParamName] :: DocumentationTag -> Maybe Identifier
+ Hydra.Typescript.Syntax: [documentationTagType] :: DocumentationTag -> Maybe TypeExpression
+ Hydra.Typescript.Syntax: [exportAllDeclarationExported] :: ExportAllDeclaration -> Maybe Identifier
+ Hydra.Typescript.Syntax: [exportAllDeclarationSource] :: ExportAllDeclaration -> StringLiteral
+ Hydra.Typescript.Syntax: [exportSpecifierExported] :: ExportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [exportSpecifierLocal] :: ExportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [forInStatementBody] :: ForInStatement -> Statement
+ Hydra.Typescript.Syntax: [forInStatementLeft] :: ForInStatement -> ForInLeft
+ Hydra.Typescript.Syntax: [forInStatementRight] :: ForInStatement -> Expression
+ Hydra.Typescript.Syntax: [forOfStatementAwait] :: ForOfStatement -> Bool
+ Hydra.Typescript.Syntax: [forOfStatementBody] :: ForOfStatement -> Statement
+ Hydra.Typescript.Syntax: [forOfStatementLeft] :: ForOfStatement -> ForInLeft
+ Hydra.Typescript.Syntax: [forOfStatementRight] :: ForOfStatement -> Expression
+ Hydra.Typescript.Syntax: [forStatementBody] :: ForStatement -> Statement
+ Hydra.Typescript.Syntax: [forStatementInit] :: ForStatement -> Maybe ForInit
+ Hydra.Typescript.Syntax: [forStatementTest] :: ForStatement -> Maybe Expression
+ Hydra.Typescript.Syntax: [forStatementUpdate] :: ForStatement -> Maybe Expression
+ Hydra.Typescript.Syntax: [functionDeclarationAsync] :: FunctionDeclaration -> Bool
+ Hydra.Typescript.Syntax: [functionDeclarationBody] :: FunctionDeclaration -> BlockStatement
+ Hydra.Typescript.Syntax: [functionDeclarationGenerator] :: FunctionDeclaration -> Bool
+ Hydra.Typescript.Syntax: [functionDeclarationId] :: FunctionDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [functionDeclarationParams] :: FunctionDeclaration -> [Pattern]
+ Hydra.Typescript.Syntax: [functionDeclarationWithCommentsBody] :: FunctionDeclarationWithComments -> FunctionDeclaration
+ Hydra.Typescript.Syntax: [functionDeclarationWithCommentsComments] :: FunctionDeclarationWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [functionExpressionAsync] :: FunctionExpression -> Bool
+ Hydra.Typescript.Syntax: [functionExpressionBody] :: FunctionExpression -> BlockStatement
+ Hydra.Typescript.Syntax: [functionExpressionGenerator] :: FunctionExpression -> Bool
+ Hydra.Typescript.Syntax: [functionExpressionId] :: FunctionExpression -> Maybe Identifier
+ Hydra.Typescript.Syntax: [functionExpressionParams] :: FunctionExpression -> [Pattern]
+ Hydra.Typescript.Syntax: [functionTypeExpressionParameters] :: FunctionTypeExpression -> [TypeExpression]
+ Hydra.Typescript.Syntax: [functionTypeExpressionReturnType] :: FunctionTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [functionTypeExpressionTypeParameters] :: FunctionTypeExpression -> [TypeParameter]
+ Hydra.Typescript.Syntax: [ifStatementAlternate] :: IfStatement -> Maybe Statement
+ Hydra.Typescript.Syntax: [ifStatementConsequent] :: IfStatement -> Statement
+ Hydra.Typescript.Syntax: [ifStatementTest] :: IfStatement -> Expression
+ Hydra.Typescript.Syntax: [importDeclarationSource] :: ImportDeclaration -> StringLiteral
+ Hydra.Typescript.Syntax: [importDeclarationSpecifiers] :: ImportDeclaration -> [ImportClause]
+ Hydra.Typescript.Syntax: [importSpecifierImported] :: ImportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [importSpecifierLocal] :: ImportSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [interfaceDeclarationExtends] :: InterfaceDeclaration -> [TypeExpression]
+ Hydra.Typescript.Syntax: [interfaceDeclarationMembers] :: InterfaceDeclaration -> [PropertySignature]
+ Hydra.Typescript.Syntax: [interfaceDeclarationName] :: InterfaceDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [interfaceDeclarationTypeParameters] :: InterfaceDeclaration -> [TypeParameter]
+ Hydra.Typescript.Syntax: [labeledStatementBody] :: LabeledStatement -> Statement
+ Hydra.Typescript.Syntax: [labeledStatementLabel] :: LabeledStatement -> Identifier
+ Hydra.Typescript.Syntax: [memberExpressionComputed] :: MemberExpression -> Bool
+ Hydra.Typescript.Syntax: [memberExpressionObject] :: MemberExpression -> Expression
+ Hydra.Typescript.Syntax: [memberExpressionOptional] :: MemberExpression -> Bool
+ Hydra.Typescript.Syntax: [memberExpressionProperty] :: MemberExpression -> Expression
+ Hydra.Typescript.Syntax: [methodDefinitionComputed] :: MethodDefinition -> Bool
+ Hydra.Typescript.Syntax: [methodDefinitionKey] :: MethodDefinition -> Expression
+ Hydra.Typescript.Syntax: [methodDefinitionKind] :: MethodDefinition -> MethodKind
+ Hydra.Typescript.Syntax: [methodDefinitionStatic] :: MethodDefinition -> Bool
+ Hydra.Typescript.Syntax: [methodDefinitionValue] :: MethodDefinition -> FunctionExpression
+ Hydra.Typescript.Syntax: [moduleItemWithCommentsBody] :: ModuleItemWithComments -> ModuleItem
+ Hydra.Typescript.Syntax: [moduleItemWithCommentsComments] :: ModuleItemWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [namedExportSource] :: NamedExport -> Maybe StringLiteral
+ Hydra.Typescript.Syntax: [namedExportSpecifiers] :: NamedExport -> [ExportSpecifier]
+ Hydra.Typescript.Syntax: [objectPatternProperties] :: ObjectPattern -> [ObjectPatternProperty]
+ Hydra.Typescript.Syntax: [parameterizedTypeExpressionArguments] :: ParameterizedTypeExpression -> [TypeExpression]
+ Hydra.Typescript.Syntax: [parameterizedTypeExpressionBase] :: ParameterizedTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [programBody] :: Program -> [ModuleItem]
+ Hydra.Typescript.Syntax: [programSourceType] :: Program -> SourceType
+ Hydra.Typescript.Syntax: [propertyComputed] :: Property -> Bool
+ Hydra.Typescript.Syntax: [propertyKey] :: Property -> Expression
+ Hydra.Typescript.Syntax: [propertyKind] :: Property -> PropertyKind
+ Hydra.Typescript.Syntax: [propertyShorthand] :: Property -> Bool
+ Hydra.Typescript.Syntax: [propertySignatureComments] :: PropertySignature -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [propertySignatureName] :: PropertySignature -> Identifier
+ Hydra.Typescript.Syntax: [propertySignatureOptional] :: PropertySignature -> Bool
+ Hydra.Typescript.Syntax: [propertySignatureReadonly] :: PropertySignature -> Bool
+ Hydra.Typescript.Syntax: [propertySignatureType] :: PropertySignature -> TypeExpression
+ Hydra.Typescript.Syntax: [propertyValue] :: Property -> Expression
+ Hydra.Typescript.Syntax: [statementWithCommentsBody] :: StatementWithComments -> Statement
+ Hydra.Typescript.Syntax: [statementWithCommentsComments] :: StatementWithComments -> Maybe DocumentationComment
+ Hydra.Typescript.Syntax: [stringLiteralSingleQuote] :: StringLiteral -> Bool
+ Hydra.Typescript.Syntax: [stringLiteralValue] :: StringLiteral -> String
+ Hydra.Typescript.Syntax: [switchCaseConsequent] :: SwitchCase -> [Statement]
+ Hydra.Typescript.Syntax: [switchCaseTest] :: SwitchCase -> Maybe Expression
+ Hydra.Typescript.Syntax: [switchStatementCases] :: SwitchStatement -> [SwitchCase]
+ Hydra.Typescript.Syntax: [switchStatementDiscriminant] :: SwitchStatement -> Expression
+ Hydra.Typescript.Syntax: [templateElementTail] :: TemplateElement -> Bool
+ Hydra.Typescript.Syntax: [templateElementValue] :: TemplateElement -> String
+ Hydra.Typescript.Syntax: [templateLiteralExpressions] :: TemplateLiteral -> [Expression]
+ Hydra.Typescript.Syntax: [templateLiteralQuasis] :: TemplateLiteral -> [TemplateElement]
+ Hydra.Typescript.Syntax: [tryStatementBlock] :: TryStatement -> BlockStatement
+ Hydra.Typescript.Syntax: [tryStatementFinalizer] :: TryStatement -> Maybe BlockStatement
+ Hydra.Typescript.Syntax: [tryStatementHandler] :: TryStatement -> Maybe CatchClause
+ Hydra.Typescript.Syntax: [typeAliasDeclarationName] :: TypeAliasDeclaration -> Identifier
+ Hydra.Typescript.Syntax: [typeAliasDeclarationTypeParameters] :: TypeAliasDeclaration -> [TypeParameter]
+ Hydra.Typescript.Syntax: [typeAliasDeclarationType] :: TypeAliasDeclaration -> TypeExpression
+ Hydra.Typescript.Syntax: [typeParameterConstraint] :: TypeParameter -> Maybe TypeExpression
+ Hydra.Typescript.Syntax: [typeParameterDefault] :: TypeParameter -> Maybe TypeExpression
+ Hydra.Typescript.Syntax: [typeParameterName] :: TypeParameter -> Identifier
+ Hydra.Typescript.Syntax: [typedPatternPattern] :: TypedPattern -> Pattern
+ Hydra.Typescript.Syntax: [typedPatternType] :: TypedPattern -> TypeExpression
+ Hydra.Typescript.Syntax: [unArrayTypeExpression] :: ArrayTypeExpression -> TypeExpression
+ Hydra.Typescript.Syntax: [unIdentifier] :: Identifier -> String
+ Hydra.Typescript.Syntax: [unImportDefaultSpecifier] :: ImportDefaultSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [unImportNamespaceSpecifier] :: ImportNamespaceSpecifier -> Identifier
+ Hydra.Typescript.Syntax: [unRestElement] :: RestElement -> Pattern
+ Hydra.Typescript.Syntax: [unSpreadElement] :: SpreadElement -> Expression
+ Hydra.Typescript.Syntax: [unThrowStatement] :: ThrowStatement -> Expression
+ Hydra.Typescript.Syntax: [unTypeAnnotation] :: TypeAnnotation -> TypeExpression
+ Hydra.Typescript.Syntax: [unaryExpressionArgument] :: UnaryExpression -> Expression
+ Hydra.Typescript.Syntax: [unaryExpressionOperator] :: UnaryExpression -> UnaryOperator
+ Hydra.Typescript.Syntax: [unaryExpressionPrefix] :: UnaryExpression -> Bool
+ Hydra.Typescript.Syntax: [variableDeclarationDeclarations] :: VariableDeclaration -> [VariableDeclarator]
+ Hydra.Typescript.Syntax: [variableDeclarationKind] :: VariableDeclaration -> VariableKind
+ Hydra.Typescript.Syntax: [variableDeclaratorId] :: VariableDeclarator -> Pattern
+ Hydra.Typescript.Syntax: [variableDeclaratorInit] :: VariableDeclarator -> Maybe Expression
+ Hydra.Typescript.Syntax: [whileStatementBody] :: WhileStatement -> Statement
+ Hydra.Typescript.Syntax: [whileStatementTest] :: WhileStatement -> Expression
+ Hydra.Typescript.Syntax: _ArrayElement :: Name
+ Hydra.Typescript.Syntax: _ArrayElement_expression :: Name
+ Hydra.Typescript.Syntax: _ArrayElement_hole :: Name
+ Hydra.Typescript.Syntax: _ArrayElement_spread :: Name
+ Hydra.Typescript.Syntax: _ArrayExpression :: Name
+ Hydra.Typescript.Syntax: _ArrayPattern :: Name
+ Hydra.Typescript.Syntax: _ArrayTypeExpression :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionBody :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionBody_block :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionBody_expression :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression_async :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression_body :: Name
+ Hydra.Typescript.Syntax: _ArrowFunctionExpression_params :: Name
+ Hydra.Typescript.Syntax: _AsExpression :: Name
+ Hydra.Typescript.Syntax: _AsExpression_expression :: Name
+ Hydra.Typescript.Syntax: _AsExpression_type :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression_left :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression_operator :: Name
+ Hydra.Typescript.Syntax: _AssignmentExpression_right :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_addAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_andAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_assign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_bitwiseAndAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_bitwiseOrAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_bitwiseXorAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_divideAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_exponentiateAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_leftShiftAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_moduloAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_multiplyAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_nullishAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_orAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_rightShiftAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_subtractAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentOperator_unsignedRightShiftAssign :: Name
+ Hydra.Typescript.Syntax: _AssignmentPattern :: Name
+ Hydra.Typescript.Syntax: _AssignmentPattern_left :: Name
+ Hydra.Typescript.Syntax: _AssignmentPattern_right :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression_left :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression_operator :: Name
+ Hydra.Typescript.Syntax: _BinaryExpression_right :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_add :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_and :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_bitwiseAnd :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_bitwiseOr :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_bitwiseXor :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_divide :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_equal :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_exponentiate :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_greaterThan :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_greaterThanOrEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_in :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_instanceof :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_leftShift :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_lessThan :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_lessThanOrEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_modulo :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_multiply :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_notEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_nullishCoalescing :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_or :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_rightShift :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_strictEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_strictNotEqual :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_subtract :: Name
+ Hydra.Typescript.Syntax: _BinaryOperator_unsignedRightShift :: Name
+ Hydra.Typescript.Syntax: _BlockStatement :: Name
+ Hydra.Typescript.Syntax: _BreakStatement :: Name
+ Hydra.Typescript.Syntax: _CallExpression :: Name
+ Hydra.Typescript.Syntax: _CallExpression_arguments :: Name
+ Hydra.Typescript.Syntax: _CallExpression_callee :: Name
+ Hydra.Typescript.Syntax: _CallExpression_optional :: Name
+ Hydra.Typescript.Syntax: _CatchClause :: Name
+ Hydra.Typescript.Syntax: _CatchClause_body :: Name
+ Hydra.Typescript.Syntax: _CatchClause_param :: Name
+ Hydra.Typescript.Syntax: _ClassBody :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration :: Name
+ Hydra.Typescript.Syntax: _ClassDeclarationWithComments :: Name
+ Hydra.Typescript.Syntax: _ClassDeclarationWithComments_body :: Name
+ Hydra.Typescript.Syntax: _ClassDeclarationWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration_body :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration_id :: Name
+ Hydra.Typescript.Syntax: _ClassDeclaration_superClass :: Name
+ Hydra.Typescript.Syntax: _Comment :: Name
+ Hydra.Typescript.Syntax: _Comment_block :: Name
+ Hydra.Typescript.Syntax: _Comment_documentation :: Name
+ Hydra.Typescript.Syntax: _Comment_line :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression_alternate :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression_consequent :: Name
+ Hydra.Typescript.Syntax: _ConditionalExpression_test :: Name
+ Hydra.Typescript.Syntax: _ContinueStatement :: Name
+ Hydra.Typescript.Syntax: _DoWhileStatement :: Name
+ Hydra.Typescript.Syntax: _DoWhileStatement_body :: Name
+ Hydra.Typescript.Syntax: _DoWhileStatement_test :: Name
+ Hydra.Typescript.Syntax: _DocumentationComment :: Name
+ Hydra.Typescript.Syntax: _DocumentationComment_description :: Name
+ Hydra.Typescript.Syntax: _DocumentationComment_tags :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_description :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_name :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_paramName :: Name
+ Hydra.Typescript.Syntax: _DocumentationTag_type :: Name
+ Hydra.Typescript.Syntax: _ExportAllDeclaration :: Name
+ Hydra.Typescript.Syntax: _ExportAllDeclaration_exported :: Name
+ Hydra.Typescript.Syntax: _ExportAllDeclaration_source :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_all :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_declaration :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_default :: Name
+ Hydra.Typescript.Syntax: _ExportDeclaration_named :: Name
+ Hydra.Typescript.Syntax: _ExportSpecifier :: Name
+ Hydra.Typescript.Syntax: _ExportSpecifier_exported :: Name
+ Hydra.Typescript.Syntax: _ExportSpecifier_local :: Name
+ Hydra.Typescript.Syntax: _Expression :: Name
+ Hydra.Typescript.Syntax: _Expression_array :: Name
+ Hydra.Typescript.Syntax: _Expression_arrow :: Name
+ Hydra.Typescript.Syntax: _Expression_asExpression :: Name
+ Hydra.Typescript.Syntax: _Expression_assignment :: Name
+ Hydra.Typescript.Syntax: _Expression_await :: Name
+ Hydra.Typescript.Syntax: _Expression_binary :: Name
+ Hydra.Typescript.Syntax: _Expression_call :: Name
+ Hydra.Typescript.Syntax: _Expression_conditional :: Name
+ Hydra.Typescript.Syntax: _Expression_function :: Name
+ Hydra.Typescript.Syntax: _Expression_identifier :: Name
+ Hydra.Typescript.Syntax: _Expression_literal :: Name
+ Hydra.Typescript.Syntax: _Expression_member :: Name
+ Hydra.Typescript.Syntax: _Expression_new :: Name
+ Hydra.Typescript.Syntax: _Expression_object :: Name
+ Hydra.Typescript.Syntax: _Expression_parenthesized :: Name
+ Hydra.Typescript.Syntax: _Expression_sequence :: Name
+ Hydra.Typescript.Syntax: _Expression_spread :: Name
+ Hydra.Typescript.Syntax: _Expression_this :: Name
+ Hydra.Typescript.Syntax: _Expression_unary :: Name
+ Hydra.Typescript.Syntax: _Expression_yield :: Name
+ Hydra.Typescript.Syntax: _ForInLeft :: Name
+ Hydra.Typescript.Syntax: _ForInLeft_pattern :: Name
+ Hydra.Typescript.Syntax: _ForInLeft_variable :: Name
+ Hydra.Typescript.Syntax: _ForInStatement :: Name
+ Hydra.Typescript.Syntax: _ForInStatement_body :: Name
+ Hydra.Typescript.Syntax: _ForInStatement_left :: Name
+ Hydra.Typescript.Syntax: _ForInStatement_right :: Name
+ Hydra.Typescript.Syntax: _ForInit :: Name
+ Hydra.Typescript.Syntax: _ForInit_expression :: Name
+ Hydra.Typescript.Syntax: _ForInit_variable :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_await :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_body :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_left :: Name
+ Hydra.Typescript.Syntax: _ForOfStatement_right :: Name
+ Hydra.Typescript.Syntax: _ForStatement :: Name
+ Hydra.Typescript.Syntax: _ForStatement_body :: Name
+ Hydra.Typescript.Syntax: _ForStatement_init :: Name
+ Hydra.Typescript.Syntax: _ForStatement_test :: Name
+ Hydra.Typescript.Syntax: _ForStatement_update :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclarationWithComments :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclarationWithComments_body :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclarationWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_async :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_body :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_generator :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_id :: Name
+ Hydra.Typescript.Syntax: _FunctionDeclaration_params :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_async :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_body :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_generator :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_id :: Name
+ Hydra.Typescript.Syntax: _FunctionExpression_params :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression_parameters :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression_returnType :: Name
+ Hydra.Typescript.Syntax: _FunctionTypeExpression_typeParameters :: Name
+ Hydra.Typescript.Syntax: _Identifier :: Name
+ Hydra.Typescript.Syntax: _IfStatement :: Name
+ Hydra.Typescript.Syntax: _IfStatement_alternate :: Name
+ Hydra.Typescript.Syntax: _IfStatement_consequent :: Name
+ Hydra.Typescript.Syntax: _IfStatement_test :: Name
+ Hydra.Typescript.Syntax: _ImportClause :: Name
+ Hydra.Typescript.Syntax: _ImportClause_default :: Name
+ Hydra.Typescript.Syntax: _ImportClause_named :: Name
+ Hydra.Typescript.Syntax: _ImportClause_namespace :: Name
+ Hydra.Typescript.Syntax: _ImportDeclaration :: Name
+ Hydra.Typescript.Syntax: _ImportDeclaration_source :: Name
+ Hydra.Typescript.Syntax: _ImportDeclaration_specifiers :: Name
+ Hydra.Typescript.Syntax: _ImportDefaultSpecifier :: Name
+ Hydra.Typescript.Syntax: _ImportNamespaceSpecifier :: Name
+ Hydra.Typescript.Syntax: _ImportSpecifier :: Name
+ Hydra.Typescript.Syntax: _ImportSpecifier_imported :: Name
+ Hydra.Typescript.Syntax: _ImportSpecifier_local :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_extends :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_members :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_name :: Name
+ Hydra.Typescript.Syntax: _InterfaceDeclaration_typeParameters :: Name
+ Hydra.Typescript.Syntax: _IntersectionTypeExpression :: Name
+ Hydra.Typescript.Syntax: _LabeledStatement :: Name
+ Hydra.Typescript.Syntax: _LabeledStatement_body :: Name
+ Hydra.Typescript.Syntax: _LabeledStatement_label :: Name
+ Hydra.Typescript.Syntax: _Literal :: Name
+ Hydra.Typescript.Syntax: _Literal_bigInt :: Name
+ Hydra.Typescript.Syntax: _Literal_boolean :: Name
+ Hydra.Typescript.Syntax: _Literal_null :: Name
+ Hydra.Typescript.Syntax: _Literal_number :: Name
+ Hydra.Typescript.Syntax: _Literal_string :: Name
+ Hydra.Typescript.Syntax: _Literal_template :: Name
+ Hydra.Typescript.Syntax: _Literal_undefined :: Name
+ Hydra.Typescript.Syntax: _MemberExpression :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_computed :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_object :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_optional :: Name
+ Hydra.Typescript.Syntax: _MemberExpression_property :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_computed :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_key :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_kind :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_static :: Name
+ Hydra.Typescript.Syntax: _MethodDefinition_value :: Name
+ Hydra.Typescript.Syntax: _MethodKind :: Name
+ Hydra.Typescript.Syntax: _MethodKind_constructor :: Name
+ Hydra.Typescript.Syntax: _MethodKind_get :: Name
+ Hydra.Typescript.Syntax: _MethodKind_method :: Name
+ Hydra.Typescript.Syntax: _MethodKind_set :: Name
+ Hydra.Typescript.Syntax: _ModuleItem :: Name
+ Hydra.Typescript.Syntax: _ModuleItemWithComments :: Name
+ Hydra.Typescript.Syntax: _ModuleItemWithComments_body :: Name
+ Hydra.Typescript.Syntax: _ModuleItemWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_export :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_import :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_interface :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_statement :: Name
+ Hydra.Typescript.Syntax: _ModuleItem_typeAlias :: Name
+ Hydra.Typescript.Syntax: _NamedExport :: Name
+ Hydra.Typescript.Syntax: _NamedExport_source :: Name
+ Hydra.Typescript.Syntax: _NamedExport_specifiers :: Name
+ Hydra.Typescript.Syntax: _NumericLiteral :: Name
+ Hydra.Typescript.Syntax: _NumericLiteral_float :: Name
+ Hydra.Typescript.Syntax: _NumericLiteral_integer :: Name
+ Hydra.Typescript.Syntax: _ObjectExpression :: Name
+ Hydra.Typescript.Syntax: _ObjectPattern :: Name
+ Hydra.Typescript.Syntax: _ObjectPatternProperty :: Name
+ Hydra.Typescript.Syntax: _ObjectPatternProperty_property :: Name
+ Hydra.Typescript.Syntax: _ObjectPatternProperty_rest :: Name
+ Hydra.Typescript.Syntax: _ObjectPattern_properties :: Name
+ Hydra.Typescript.Syntax: _ObjectTypeExpression :: Name
+ Hydra.Typescript.Syntax: _ParameterizedTypeExpression :: Name
+ Hydra.Typescript.Syntax: _ParameterizedTypeExpression_arguments :: Name
+ Hydra.Typescript.Syntax: _ParameterizedTypeExpression_base :: Name
+ Hydra.Typescript.Syntax: _Pattern :: Name
+ Hydra.Typescript.Syntax: _Pattern_array :: Name
+ Hydra.Typescript.Syntax: _Pattern_assignment :: Name
+ Hydra.Typescript.Syntax: _Pattern_identifier :: Name
+ Hydra.Typescript.Syntax: _Pattern_object :: Name
+ Hydra.Typescript.Syntax: _Pattern_rest :: Name
+ Hydra.Typescript.Syntax: _Pattern_typed :: Name
+ Hydra.Typescript.Syntax: _Program :: Name
+ Hydra.Typescript.Syntax: _Program_body :: Name
+ Hydra.Typescript.Syntax: _Program_sourceType :: Name
+ Hydra.Typescript.Syntax: _Property :: Name
+ Hydra.Typescript.Syntax: _PropertyKind :: Name
+ Hydra.Typescript.Syntax: _PropertyKind_get :: Name
+ Hydra.Typescript.Syntax: _PropertyKind_init :: Name
+ Hydra.Typescript.Syntax: _PropertyKind_set :: Name
+ Hydra.Typescript.Syntax: _PropertySignature :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_comments :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_name :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_optional :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_readonly :: Name
+ Hydra.Typescript.Syntax: _PropertySignature_type :: Name
+ Hydra.Typescript.Syntax: _Property_computed :: Name
+ Hydra.Typescript.Syntax: _Property_key :: Name
+ Hydra.Typescript.Syntax: _Property_kind :: Name
+ Hydra.Typescript.Syntax: _Property_shorthand :: Name
+ Hydra.Typescript.Syntax: _Property_value :: Name
+ Hydra.Typescript.Syntax: _QualifiedName :: Name
+ Hydra.Typescript.Syntax: _RestElement :: Name
+ Hydra.Typescript.Syntax: _ReturnStatement :: Name
+ Hydra.Typescript.Syntax: _SourceType :: Name
+ Hydra.Typescript.Syntax: _SourceType_module :: Name
+ Hydra.Typescript.Syntax: _SourceType_script :: Name
+ Hydra.Typescript.Syntax: _SpreadElement :: Name
+ Hydra.Typescript.Syntax: _Statement :: Name
+ Hydra.Typescript.Syntax: _StatementWithComments :: Name
+ Hydra.Typescript.Syntax: _StatementWithComments_body :: Name
+ Hydra.Typescript.Syntax: _StatementWithComments_comments :: Name
+ Hydra.Typescript.Syntax: _Statement_block :: Name
+ Hydra.Typescript.Syntax: _Statement_break :: Name
+ Hydra.Typescript.Syntax: _Statement_classDeclaration :: Name
+ Hydra.Typescript.Syntax: _Statement_continue :: Name
+ Hydra.Typescript.Syntax: _Statement_debugger :: Name
+ Hydra.Typescript.Syntax: _Statement_doWhile :: Name
+ Hydra.Typescript.Syntax: _Statement_empty :: Name
+ Hydra.Typescript.Syntax: _Statement_expression :: Name
+ Hydra.Typescript.Syntax: _Statement_for :: Name
+ Hydra.Typescript.Syntax: _Statement_forIn :: Name
+ Hydra.Typescript.Syntax: _Statement_forOf :: Name
+ Hydra.Typescript.Syntax: _Statement_functionDeclaration :: Name
+ Hydra.Typescript.Syntax: _Statement_if :: Name
+ Hydra.Typescript.Syntax: _Statement_labeled :: Name
+ Hydra.Typescript.Syntax: _Statement_return :: Name
+ Hydra.Typescript.Syntax: _Statement_switch :: Name
+ Hydra.Typescript.Syntax: _Statement_throw :: Name
+ Hydra.Typescript.Syntax: _Statement_try :: Name
+ Hydra.Typescript.Syntax: _Statement_variableDeclaration :: Name
+ Hydra.Typescript.Syntax: _Statement_while :: Name
+ Hydra.Typescript.Syntax: _StringLiteral :: Name
+ Hydra.Typescript.Syntax: _StringLiteral_singleQuote :: Name
+ Hydra.Typescript.Syntax: _StringLiteral_value :: Name
+ Hydra.Typescript.Syntax: _SwitchCase :: Name
+ Hydra.Typescript.Syntax: _SwitchCase_consequent :: Name
+ Hydra.Typescript.Syntax: _SwitchCase_test :: Name
+ Hydra.Typescript.Syntax: _SwitchStatement :: Name
+ Hydra.Typescript.Syntax: _SwitchStatement_cases :: Name
+ Hydra.Typescript.Syntax: _SwitchStatement_discriminant :: Name
+ Hydra.Typescript.Syntax: _TemplateElement :: Name
+ Hydra.Typescript.Syntax: _TemplateElement_tail :: Name
+ Hydra.Typescript.Syntax: _TemplateElement_value :: Name
+ Hydra.Typescript.Syntax: _TemplateLiteral :: Name
+ Hydra.Typescript.Syntax: _TemplateLiteral_expressions :: Name
+ Hydra.Typescript.Syntax: _TemplateLiteral_quasis :: Name
+ Hydra.Typescript.Syntax: _ThrowStatement :: Name
+ Hydra.Typescript.Syntax: _TryStatement :: Name
+ Hydra.Typescript.Syntax: _TryStatement_block :: Name
+ Hydra.Typescript.Syntax: _TryStatement_finalizer :: Name
+ Hydra.Typescript.Syntax: _TryStatement_handler :: Name
+ Hydra.Typescript.Syntax: _TupleTypeExpression :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration_name :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration_type :: Name
+ Hydra.Typescript.Syntax: _TypeAliasDeclaration_typeParameters :: Name
+ Hydra.Typescript.Syntax: _TypeAnnotation :: Name
+ Hydra.Typescript.Syntax: _TypeExpression :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_any :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_array :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_function :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_identifier :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_intersection :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_literal :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_never :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_object :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_optional :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_parameterized :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_readonly :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_tuple :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_union :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_unknown :: Name
+ Hydra.Typescript.Syntax: _TypeExpression_void :: Name
+ Hydra.Typescript.Syntax: _TypeParameter :: Name
+ Hydra.Typescript.Syntax: _TypeParameter_constraint :: Name
+ Hydra.Typescript.Syntax: _TypeParameter_default :: Name
+ Hydra.Typescript.Syntax: _TypeParameter_name :: Name
+ Hydra.Typescript.Syntax: _TypedPattern :: Name
+ Hydra.Typescript.Syntax: _TypedPattern_pattern :: Name
+ Hydra.Typescript.Syntax: _TypedPattern_type :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression_argument :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression_operator :: Name
+ Hydra.Typescript.Syntax: _UnaryExpression_prefix :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_bitwiseNot :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_decrement :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_delete :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_increment :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_negate :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_not :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_plus :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_typeof :: Name
+ Hydra.Typescript.Syntax: _UnaryOperator_void :: Name
+ Hydra.Typescript.Syntax: _UnionTypeExpression :: Name
+ Hydra.Typescript.Syntax: _VariableDeclaration :: Name
+ Hydra.Typescript.Syntax: _VariableDeclaration_declarations :: Name
+ Hydra.Typescript.Syntax: _VariableDeclaration_kind :: Name
+ Hydra.Typescript.Syntax: _VariableDeclarator :: Name
+ Hydra.Typescript.Syntax: _VariableDeclarator_id :: Name
+ Hydra.Typescript.Syntax: _VariableDeclarator_init :: Name
+ Hydra.Typescript.Syntax: _VariableKind :: Name
+ Hydra.Typescript.Syntax: _VariableKind_const :: Name
+ Hydra.Typescript.Syntax: _VariableKind_let :: Name
+ Hydra.Typescript.Syntax: _VariableKind_var :: Name
+ Hydra.Typescript.Syntax: _WhileStatement :: Name
+ Hydra.Typescript.Syntax: _WhileStatement_body :: Name
+ Hydra.Typescript.Syntax: _WhileStatement_test :: Name
+ Hydra.Typescript.Syntax: data ArrayElement
+ Hydra.Typescript.Syntax: data ArrowFunctionBody
+ Hydra.Typescript.Syntax: data ArrowFunctionExpression
+ Hydra.Typescript.Syntax: data AsExpression
+ Hydra.Typescript.Syntax: data AssignmentExpression
+ Hydra.Typescript.Syntax: data AssignmentOperator
+ Hydra.Typescript.Syntax: data AssignmentPattern
+ Hydra.Typescript.Syntax: data BinaryExpression
+ Hydra.Typescript.Syntax: data BinaryOperator
+ Hydra.Typescript.Syntax: data CallExpression
+ Hydra.Typescript.Syntax: data CatchClause
+ Hydra.Typescript.Syntax: data ClassDeclaration
+ Hydra.Typescript.Syntax: data ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: data Comment
+ Hydra.Typescript.Syntax: data ConditionalExpression
+ Hydra.Typescript.Syntax: data DoWhileStatement
+ Hydra.Typescript.Syntax: data DocumentationComment
+ Hydra.Typescript.Syntax: data DocumentationTag
+ Hydra.Typescript.Syntax: data ExportAllDeclaration
+ Hydra.Typescript.Syntax: data ExportDeclaration
+ Hydra.Typescript.Syntax: data ExportSpecifier
+ Hydra.Typescript.Syntax: data Expression
+ Hydra.Typescript.Syntax: data ForInLeft
+ Hydra.Typescript.Syntax: data ForInStatement
+ Hydra.Typescript.Syntax: data ForInit
+ Hydra.Typescript.Syntax: data ForOfStatement
+ Hydra.Typescript.Syntax: data ForStatement
+ Hydra.Typescript.Syntax: data FunctionDeclaration
+ Hydra.Typescript.Syntax: data FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: data FunctionExpression
+ Hydra.Typescript.Syntax: data FunctionTypeExpression
+ Hydra.Typescript.Syntax: data IfStatement
+ Hydra.Typescript.Syntax: data ImportClause
+ Hydra.Typescript.Syntax: data ImportDeclaration
+ Hydra.Typescript.Syntax: data ImportSpecifier
+ Hydra.Typescript.Syntax: data InterfaceDeclaration
+ Hydra.Typescript.Syntax: data LabeledStatement
+ Hydra.Typescript.Syntax: data Literal
+ Hydra.Typescript.Syntax: data MemberExpression
+ Hydra.Typescript.Syntax: data MethodDefinition
+ Hydra.Typescript.Syntax: data MethodKind
+ Hydra.Typescript.Syntax: data ModuleItem
+ Hydra.Typescript.Syntax: data ModuleItemWithComments
+ Hydra.Typescript.Syntax: data NamedExport
+ Hydra.Typescript.Syntax: data NumericLiteral
+ Hydra.Typescript.Syntax: data ObjectPattern
+ Hydra.Typescript.Syntax: data ObjectPatternProperty
+ Hydra.Typescript.Syntax: data ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: data Pattern
+ Hydra.Typescript.Syntax: data Program
+ Hydra.Typescript.Syntax: data Property
+ Hydra.Typescript.Syntax: data PropertyKind
+ Hydra.Typescript.Syntax: data PropertySignature
+ Hydra.Typescript.Syntax: data SourceType
+ Hydra.Typescript.Syntax: data Statement
+ Hydra.Typescript.Syntax: data StatementWithComments
+ Hydra.Typescript.Syntax: data StringLiteral
+ Hydra.Typescript.Syntax: data SwitchCase
+ Hydra.Typescript.Syntax: data SwitchStatement
+ Hydra.Typescript.Syntax: data TemplateElement
+ Hydra.Typescript.Syntax: data TemplateLiteral
+ Hydra.Typescript.Syntax: data TryStatement
+ Hydra.Typescript.Syntax: data TypeAliasDeclaration
+ Hydra.Typescript.Syntax: data TypeExpression
+ Hydra.Typescript.Syntax: data TypeParameter
+ Hydra.Typescript.Syntax: data TypedPattern
+ Hydra.Typescript.Syntax: data UnaryExpression
+ Hydra.Typescript.Syntax: data UnaryOperator
+ Hydra.Typescript.Syntax: data VariableDeclaration
+ Hydra.Typescript.Syntax: data VariableDeclarator
+ Hydra.Typescript.Syntax: data VariableKind
+ Hydra.Typescript.Syntax: data WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Eq Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Classes.Ord Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Read.Read Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrayElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrayTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrowFunctionBody
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ArrowFunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AsExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AssignmentExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AssignmentOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.AssignmentPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.BinaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.BinaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.CallExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.CatchClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ClassDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ClassDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Comment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ConditionalExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.DoWhileStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.DocumentationComment
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.DocumentationTag
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ExportAllDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ExportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ExportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Expression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForInLeft
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForInStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForInit
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForOfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ForStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionDeclarationWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.FunctionTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Identifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.IfStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportClause
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ImportSpecifier
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.InterfaceDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.LabeledStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Literal
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.MemberExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.MethodDefinition
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.MethodKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ModuleItem
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ModuleItemWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.NamedExport
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.NumericLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ObjectPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ObjectPatternProperty
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ParameterizedTypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Pattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Program
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Property
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.PropertyKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.PropertySignature
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.RestElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SourceType
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SpreadElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.Statement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.StatementWithComments
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.StringLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SwitchCase
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.SwitchStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TemplateElement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TemplateLiteral
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.ThrowStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TryStatement
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeAliasDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeAnnotation
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypeParameter
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.TypedPattern
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.UnaryExpression
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.UnaryOperator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.VariableDeclaration
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.VariableDeclarator
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.VariableKind
+ Hydra.Typescript.Syntax: instance GHC.Internal.Show.Show Hydra.Typescript.Syntax.WhileStatement
+ Hydra.Typescript.Syntax: newtype ArrayTypeExpression
+ Hydra.Typescript.Syntax: newtype Identifier
+ Hydra.Typescript.Syntax: newtype ImportDefaultSpecifier
+ Hydra.Typescript.Syntax: newtype ImportNamespaceSpecifier
+ Hydra.Typescript.Syntax: newtype RestElement
+ Hydra.Typescript.Syntax: newtype SpreadElement
+ Hydra.Typescript.Syntax: newtype ThrowStatement
+ Hydra.Typescript.Syntax: newtype TypeAnnotation
+ Hydra.Typescript.Syntax: type ArrayExpression = [ArrayElement]
+ Hydra.Typescript.Syntax: type ArrayPattern = [Maybe Pattern]
+ Hydra.Typescript.Syntax: type BlockStatement = [Statement]
+ Hydra.Typescript.Syntax: type BreakStatement = Maybe Identifier
+ Hydra.Typescript.Syntax: type ClassBody = [MethodDefinition]
+ Hydra.Typescript.Syntax: type ContinueStatement = Maybe Identifier
+ Hydra.Typescript.Syntax: type IntersectionTypeExpression = [TypeExpression]
+ Hydra.Typescript.Syntax: type ObjectExpression = [Property]
+ Hydra.Typescript.Syntax: type ObjectTypeExpression = [PropertySignature]
+ Hydra.Typescript.Syntax: type QualifiedName = [Identifier]
+ Hydra.Typescript.Syntax: type ReturnStatement = Maybe Expression
+ Hydra.Typescript.Syntax: type TupleTypeExpression = [TypeExpression]
+ Hydra.Typescript.Syntax: type UnionTypeExpression = [TypeExpression]
Files
- CHANGELOG.md +80/−0
- hydra-typescript.cabal +9/−9
- src/main/haskell/Hydra/Dsl/TypeScript/Syntax.hs +0/−7269
- src/main/haskell/Hydra/Overlay/Haskell/Dsl/TypeScript/Helpers.hs +0/−623
- src/main/haskell/Hydra/TypeScript/Coder.hs +0/−1227
- src/main/haskell/Hydra/TypeScript/Language.hs +0/−301
- src/main/haskell/Hydra/TypeScript/Operators.hs +0/−196
- src/main/haskell/Hydra/TypeScript/Serde.hs +0/−1081
- src/main/haskell/Hydra/TypeScript/Syntax.hs +0/−1730
- src/main/haskell/Hydra/Typescript/Coder.hs +1232/−0
- src/main/haskell/Hydra/Typescript/Dsl/Syntax.hs +7269/−0
- src/main/haskell/Hydra/Typescript/Language.hs +303/−0
- src/main/haskell/Hydra/Typescript/Operators.hs +198/−0
- src/main/haskell/Hydra/Typescript/Overlay/Haskell/Dsl/TypeScript/Helpers.hs +623/−0
- src/main/haskell/Hydra/Typescript/Serde.hs +1083/−0
- src/main/haskell/Hydra/Typescript/Syntax.hs +1730/−0
CHANGELOG.md view
@@ -15,6 +15,86 @@ --- +## [0.18.0] - 2026-09-29++Module-naming systematization release: every kernel and package module moves onto a uniform+`hydra.core.*` / `hydra.<pkg>.*` grammar, completing the package ⊃ module ⊃ definition containment+tower. The rename touches every module, definition, and cross-host reference in the codebase; this+release exists primarily to ship it as its own coordinated batch. Also lands the translingual regex+primitive pipeline and several silent-correctness fixes in the coder layer.++### Highlights++- **Module-name grammar systematization** ([#729](https://github.com/CategoricalData/hydra/issues/729)):+ every `hydra.*` module renamed onto a uniform package-derived prefix — kernel modules move to+ `hydra.core.*`, package modules to `hydra.<pkg>.*` — closing the long-standing inconsistency where+ a package name had no structural relationship to the module names it contained. The rename spans+ every host (Haskell, Java, Python, Scala, TypeScript, all four Lisp dialects) and required fixing+ stale namespace references, overlay-directory paths, and `hostOverrides` shims across every driver+ and bootstrap script that had hardcoded the old grammar. Further consolidation (a structurally+ enforced package↔prefix law) is tracked for 0.18.1. The kernel package itself is still published as+ `hydra-kernel` (its modules are under `hydra.core.*`); the `hydra-core` package rename #729 called for+ is under review because that name is taken on PyPI and npm+ ([#770](https://github.com/CategoricalData/hydra/issues/770)).+- **Translingual regex primitives** ([#603](https://github.com/CategoricalData/hydra/issues/603)):+ `hydra.lib.regex` primitives (`find`, `findAll`, `matches`, `replace`, `replaceAll`, `split`) now run+ every pattern through the shared `hydra.regex` parse/print pipeline instead of handing raw pattern+ strings to each host's native engine, so a pattern means the same thing on every host. Includes a+ host-independent conformance suite and a leftmost-longest alternation fix in the PCRE/POSIX printers.+- **Silent-corruption fixes across the coder layer**+ ([#744](https://github.com/CategoricalData/hydra/issues/744),+ [#765](https://github.com/CategoricalData/hydra/issues/765),+ [#649](https://github.com/CategoricalData/hydra/issues/649)): fixed data-corrupting bugs in the+ JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders (extended integer widths, map-key handling), the+ kernel's encode/decode generators (reversed type-parameter order on 2+-param polymorphic types), and+ the Python coder (silently dropping a module's types when types and terms share a file path).+- **Self-hosted specification docs** ([#723](https://github.com/CategoricalData/hydra/issues/723)):+ the module-reference pages under `docs/specification/` are now generated directly from the kernel+ (`bin/regenerate-spec.sh`) via a new metadata-only doc coder, rather than hand-maintained.++### New features++- **[#603](https://github.com/CategoricalData/hydra/issues/603)** host-independent regex conformance+ suite covering the minimal-core grammar (literals, classes, quantifiers, alternation, anchors,+ grouping) across all 9 hosts.+- **[#723](https://github.com/CategoricalData/hydra/issues/723)** `hydra.markdown` type module and+ `generateModuleDoc`, the metadata-only doc coder backing the self-generated spec pages.+- **[#382](https://github.com/CategoricalData/hydra/issues/382)** the Rust coder is split out of+ `hydra-ext` into its own first-class `hydra-rust` package.++### Bug fixes++- **[#744](https://github.com/CategoricalData/hydra/issues/744)** silent data corruption in+ JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders for extended integer widths and map-key handling.+- **[#765](https://github.com/CategoricalData/hydra/issues/765)** kernel encode/decode generators+ emitted reversed type-parameter order for 2+-param polymorphic types.+- **[#649](https://github.com/CategoricalData/hydra/issues/649)** Python coder silently dropped a+ module's types when types and terms targeted the same output file path.+- **[#572](https://github.com/CategoricalData/hydra/issues/572)** TypeScript kernel-JSON test+ bridge's compact-form decode heuristic mishandled nullary union arms.+- **[#761](https://github.com/CategoricalData/hydra/issues/761)** cold-seed generation ignored+ `hostOverrides.java=local`, silently pulling the published Java host jar instead.+- **[#736](https://github.com/CategoricalData/hydra/issues/736)** Java build now pins JDK 11 via a+ Gradle toolchain block, instead of depending on ambient `JAVA_HOME`.++### Improvements++- **[#327](https://github.com/CategoricalData/hydra/issues/327)** new `hydra.diff` schema-diff type+ module; `Term.Inject` comparison is now by variant name.+- **[#573](https://github.com/CategoricalData/hydra/issues/573)** per-registry publish sets (Hackage,+ Maven, PyPI, npm) are now derived from the package registry itself instead of 13 hand-maintained+ lists — closes a recurring class of silent release-time drift.+- **[#735](https://github.com/CategoricalData/hydra/issues/735)** cross-host decimal-scale test+ filtering now driven by a translingual `scaleDistinct` capability tag instead of hand-copied+ per-host skip lists.++### Documentation++- **[#655](https://github.com/CategoricalData/hydra/issues/655)** documented the overlay-emission+ "implementation wins" decision for bare primitive references (`docs/overlays.md`).++---+ ## [0.17.7] - 2026-09-14 Correctness-hardening point release on the 0.17.x line, consolidating the 0.17.6 breaking batch. It
hydra-typescript.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: hydra-typescript-version: 0.17.7+version: 0.18.0 synopsis: Hydra's TypeScript coder: emit TypeScript source from Hydra modules description: Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". TypeScript support for Hydra category: Data@@ -27,13 +27,13 @@ library exposed-modules:- Hydra.Dsl.TypeScript.Syntax- Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers- Hydra.TypeScript.Coder- Hydra.TypeScript.Language- Hydra.TypeScript.Operators- Hydra.TypeScript.Serde- Hydra.TypeScript.Syntax+ Hydra.Typescript.Coder+ Hydra.Typescript.Dsl.Syntax+ Hydra.Typescript.Language+ Hydra.Typescript.Operators+ Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers+ Hydra.Typescript.Serde+ Hydra.Typescript.Syntax other-modules: Paths_hydra_typescript hs-source-dirs:@@ -41,6 +41,6 @@ build-depends: base >=4.19.0 && <4.22 , containers >=0.6.7 && <0.8- , hydra-kernel ==0.17.7+ , hydra-kernel ==0.18.0 , scientific >=0.3.7 && <0.4 default-language: Haskell2010
− src/main/haskell/Hydra/Dsl/TypeScript/Syntax.hs
@@ -1,7269 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | DSL functions for hydra.typeScript.syntax--module Hydra.Dsl.TypeScript.Syntax where--import qualified Hydra.Core as Core-import qualified Hydra.TypeScript.Syntax as Syntax-import qualified Hydra.Typed as Typed-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Int as I---- | DSL name token for hydra.typeScript.syntax.ArrayElement-arrayElementArrayElement :: Typed.TypedName Syntax.ArrayElement-arrayElementArrayElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrayElement")---- | DSL injection for the expression variant of hydra.typeScript.syntax.ArrayElement-arrayElementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrayElement-arrayElementExpression x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrayElement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "expression"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the hole variant of hydra.typeScript.syntax.ArrayElement-arrayElementHole :: Typed.TypedTerm Syntax.ArrayElement-arrayElementHole =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrayElement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "hole"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the spread variant of hydra.typeScript.syntax.ArrayElement-arrayElementSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.ArrayElement-arrayElementSpread x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrayElement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "spread"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.typeScript.syntax.ArrayTypeExpression wrapper-arrayTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ArrayTypeExpression-arrayTypeExpression x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ArrayTypeExpression"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ArrayTypeExpression-arrayTypeExpressionArrayTypeExpression :: Typed.TypedName Syntax.ArrayTypeExpression-arrayTypeExpressionArrayTypeExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrayTypeExpression")---- | DSL name token for hydra.typeScript.syntax.ArrowFunctionBody-arrowFunctionBodyArrowFunctionBody :: Typed.TypedName Syntax.ArrowFunctionBody-arrowFunctionBodyArrowFunctionBody = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrowFunctionBody")---- | DSL injection for the block variant of hydra.typeScript.syntax.ArrowFunctionBody-arrowFunctionBodyBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.ArrowFunctionBody-arrowFunctionBodyBlock x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionBody"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "block"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expression variant of hydra.typeScript.syntax.ArrowFunctionBody-arrowFunctionBodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrowFunctionBody-arrowFunctionBodyExpression x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionBody"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "expression"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpression :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpression params body async =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Typed.unTypedTerm params)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Typed.unTypedTerm async)}]}))---- | DSL name token for hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionArrowFunctionExpression :: Typed.TypedName Syntax.ArrowFunctionExpression-arrowFunctionExpressionArrowFunctionExpression =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression")---- | DSL accessor for the async field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool-arrowFunctionExpressionAsync x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody-arrowFunctionExpressionBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the params field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern]-arrowFunctionExpressionParams x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the async field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionWithAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpressionWithAsync original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionWithBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpressionWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the params field of hydra.typeScript.syntax.ArrowFunctionExpression-arrowFunctionExpressionWithParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionExpression-arrowFunctionExpressionWithParams original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.AsExpression-asExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression-asExpression expression type_ =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "expression"),- Core.fieldTerm = (Typed.unTypedTerm expression)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL name token for hydra.typeScript.syntax.AsExpression-asExpressionAsExpression :: Typed.TypedName Syntax.AsExpression-asExpressionAsExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AsExpression")---- | DSL accessor for the expression field of hydra.typeScript.syntax.AsExpression-asExpressionExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression-asExpressionExpression x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),- Core.projectionFieldName = (Core.Name "expression")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.AsExpression-asExpressionType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression-asExpressionType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.typeScript.syntax.AsExpression-asExpressionWithExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AsExpression-asExpressionWithExpression original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "expression"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.AsExpression-asExpressionWithType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression-asExpressionWithType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "expression"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AsExpression"),- Core.projectionFieldName = (Core.Name "expression")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.AssignmentExpression-assignmentExpression :: Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpression operator left right =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Typed.unTypedTerm operator)},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm left)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm right)}]}))---- | DSL name token for hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression-assignmentExpressionAssignmentExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AssignmentExpression")---- | DSL accessor for the left field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern-assignmentExpressionLeft x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator-assignmentExpressionOperator x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression-assignmentExpressionRight x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the left field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionWithLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionWithLeft original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionWithOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionWithOperator original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.AssignmentExpression-assignmentExpressionWithRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionWithRight original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentExpression"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the addAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAddAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorAddAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "addAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the andAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorAndAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "andAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the assign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "assign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorAssignmentOperator :: Typed.TypedName Syntax.AssignmentOperator-assignmentOperatorAssignmentOperator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AssignmentOperator")---- | DSL injection for the bitwiseAndAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorBitwiseAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorBitwiseAndAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bitwiseAndAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseOrAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorBitwiseOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorBitwiseOrAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bitwiseOrAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseXorAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorBitwiseXorAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorBitwiseXorAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bitwiseXorAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the divideAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorDivideAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorDivideAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "divideAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the exponentiateAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorExponentiateAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorExponentiateAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "exponentiateAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the leftShiftAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorLeftShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorLeftShiftAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "leftShiftAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the moduloAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorModuloAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorModuloAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "moduloAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the multiplyAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorMultiplyAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorMultiplyAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "multiplyAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the nullishAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorNullishAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorNullishAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "nullishAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the orAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorOrAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "orAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the rightShiftAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorRightShiftAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "rightShiftAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the subtractAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorSubtractAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorSubtractAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "subtractAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the unsignedRightShiftAssign variant of hydra.typeScript.syntax.AssignmentOperator-assignmentOperatorUnsignedRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorUnsignedRightShiftAssign =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "unsignedRightShiftAssign"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.AssignmentPattern-assignmentPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern-assignmentPattern left right =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm left)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm right)}]}))---- | DSL name token for hydra.typeScript.syntax.AssignmentPattern-assignmentPatternAssignmentPattern :: Typed.TypedName Syntax.AssignmentPattern-assignmentPatternAssignmentPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.AssignmentPattern")---- | DSL accessor for the left field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern-assignmentPatternLeft x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression-assignmentPatternRight x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the left field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternWithLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentPattern-assignmentPatternWithLeft original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.AssignmentPattern-assignmentPatternWithRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern-assignmentPatternWithRight original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.AssignmentPattern"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.BinaryExpression-binaryExpression :: Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpression operator left right =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Typed.unTypedTerm operator)},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm left)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm right)}]}))---- | DSL name token for hydra.typeScript.syntax.BinaryExpression-binaryExpressionBinaryExpression :: Typed.TypedName Syntax.BinaryExpression-binaryExpressionBinaryExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.BinaryExpression")---- | DSL accessor for the left field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression-binaryExpressionLeft x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator-binaryExpressionOperator x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression-binaryExpressionRight x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the left field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionWithLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpressionWithLeft original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionWithOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpressionWithOperator original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.BinaryExpression-binaryExpressionWithRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression-binaryExpressionWithRight original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryExpression"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the add variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorAdd :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorAdd =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "add"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the and variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorAnd :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorAnd =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "and"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.BinaryOperator-binaryOperatorBinaryOperator :: Typed.TypedName Syntax.BinaryOperator-binaryOperatorBinaryOperator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.BinaryOperator")---- | DSL injection for the bitwiseAnd variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorBitwiseAnd :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorBitwiseAnd =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bitwiseAnd"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseOr variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorBitwiseOr :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorBitwiseOr =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bitwiseOr"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the bitwiseXor variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorBitwiseXor :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorBitwiseXor =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bitwiseXor"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the divide variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorDivide :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorDivide =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "divide"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the equal variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorEqual =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "equal"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the exponentiate variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorExponentiate :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorExponentiate =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "exponentiate"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the greaterThan variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorGreaterThan :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorGreaterThan =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "greaterThan"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the greaterThanOrEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorGreaterThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorGreaterThanOrEqual =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "greaterThanOrEqual"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the in variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorIn :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorIn =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "in"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the instanceof variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorInstanceof :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorInstanceof =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "instanceof"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the leftShift variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorLeftShift :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorLeftShift =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "leftShift"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the lessThan variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorLessThan :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorLessThan =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "lessThan"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the lessThanOrEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorLessThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorLessThanOrEqual =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "lessThanOrEqual"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the modulo variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorModulo :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorModulo =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "modulo"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the multiply variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorMultiply :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorMultiply =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "multiply"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the notEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorNotEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorNotEqual =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "notEqual"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the nullishCoalescing variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorNullishCoalescing :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorNullishCoalescing =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "nullishCoalescing"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the or variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorOr :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorOr =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "or"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the rightShift variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorRightShift :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorRightShift =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "rightShift"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorStrictEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorStrictEqual =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "strictEqual"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictNotEqual variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorStrictNotEqual :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorStrictNotEqual =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "strictNotEqual"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the subtract variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorSubtract :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorSubtract =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "subtract"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the unsignedRightShift variant of hydra.typeScript.syntax.BinaryOperator-binaryOperatorUnsignedRightShift :: Typed.TypedTerm Syntax.BinaryOperator-binaryOperatorUnsignedRightShift =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.BinaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "unsignedRightShift"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.CallExpression-callExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression-callExpression callee arguments optional =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "callee"),- Core.fieldTerm = (Typed.unTypedTerm callee)},- Core.Field {- Core.fieldName = (Core.Name "arguments"),- Core.fieldTerm = (Typed.unTypedTerm arguments)},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Typed.unTypedTerm optional)}]}))---- | DSL accessor for the arguments field of hydra.typeScript.syntax.CallExpression-callExpressionArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression]-callExpressionArguments x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "arguments")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.CallExpression-callExpressionCallExpression :: Typed.TypedName Syntax.CallExpression-callExpressionCallExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.CallExpression")---- | DSL accessor for the callee field of hydra.typeScript.syntax.CallExpression-callExpressionCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression-callExpressionCallee x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "callee")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the optional field of hydra.typeScript.syntax.CallExpression-callExpressionOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool-callExpressionOptional x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the arguments field of hydra.typeScript.syntax.CallExpression-callExpressionWithArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.CallExpression-callExpressionWithArguments original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "callee"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "callee")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "arguments"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the callee field of hydra.typeScript.syntax.CallExpression-callExpressionWithCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CallExpression-callExpressionWithCallee original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "callee"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "arguments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "arguments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the optional field of hydra.typeScript.syntax.CallExpression-callExpressionWithOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression-callExpressionWithOptional original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "callee"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "callee")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "arguments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CallExpression"),- Core.projectionFieldName = (Core.Name "arguments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.CatchClause-catchClause :: Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause-catchClause param body =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "param"),- Core.fieldTerm = (Typed.unTypedTerm param)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.CatchClause-catchClauseBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement-catchClauseBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.CatchClause-catchClauseCatchClause :: Typed.TypedName Syntax.CatchClause-catchClauseCatchClause = Typed.TypedName (Core.Name "hydra.typeScript.syntax.CatchClause")---- | DSL accessor for the param field of hydra.typeScript.syntax.CatchClause-catchClauseParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern)-catchClauseParam x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),- Core.projectionFieldName = (Core.Name "param")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.CatchClause-catchClauseWithBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause-catchClauseWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "param"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),- Core.projectionFieldName = (Core.Name "param")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the param field of hydra.typeScript.syntax.CatchClause-catchClauseWithParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.CatchClause-catchClauseWithParam original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "param"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.CatchClause"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.ClassDeclaration-classDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclaration id superClass body =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm id)},- Core.Field {- Core.fieldName = (Core.Name "superClass"),- Core.fieldTerm = (Typed.unTypedTerm superClass)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody-classDeclarationBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ClassDeclaration-classDeclarationClassDeclaration :: Typed.TypedName Syntax.ClassDeclaration-classDeclarationClassDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ClassDeclaration")---- | DSL accessor for the id field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier-classDeclarationId x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the superClass field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression)-classDeclarationSuperClass x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "superClass")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationWithBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "superClass"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "superClass")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithComments :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments-classDeclarationWithComments body comments =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithCommentsBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsClassDeclarationWithComments :: Typed.TypedName Syntax.ClassDeclarationWithComments-classDeclarationWithCommentsClassDeclarationWithComments =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments")---- | DSL accessor for the comments field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-classDeclarationWithCommentsComments x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments-classDeclarationWithCommentsWithComments original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the id field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationWithId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithId original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "superClass"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "superClass")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the superClass field of hydra.typeScript.syntax.ClassDeclaration-classDeclarationWithSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationWithSuperClass original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "superClass"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ClassDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the block variant of hydra.typeScript.syntax.Comment-commentBlock :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment-commentBlock x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Comment"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "block"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Comment-commentComment :: Typed.TypedName Syntax.Comment-commentComment = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Comment")---- | DSL injection for the documentation variant of hydra.typeScript.syntax.Comment-commentDocumentation :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm Syntax.Comment-commentDocumentation x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Comment"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "documentation"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the line variant of hydra.typeScript.syntax.Comment-commentLine :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment-commentLine x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Comment"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "line"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ConditionalExpression-conditionalExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpression test consequent alternate =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm test)},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Typed.unTypedTerm consequent)},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Typed.unTypedTerm alternate)}]}))---- | DSL accessor for the alternate field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-conditionalExpressionAlternate x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "alternate")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionConditionalExpression :: Typed.TypedName Syntax.ConditionalExpression-conditionalExpressionConditionalExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ConditionalExpression")---- | DSL accessor for the consequent field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-conditionalExpressionConsequent x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the test field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-conditionalExpressionTest x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the alternate field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionWithAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionWithAlternate original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the consequent field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionWithConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionWithConsequent original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "alternate")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.ConditionalExpression-conditionalExpressionWithTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionWithTest original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ConditionalExpression"),- Core.projectionFieldName = (Core.Name "alternate")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.DoWhileStatement-doWhileStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement-doWhileStatement body test =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm test)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement-doWhileStatementBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.DoWhileStatement-doWhileStatementDoWhileStatement :: Typed.TypedName Syntax.DoWhileStatement-doWhileStatementDoWhileStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.DoWhileStatement")---- | DSL accessor for the test field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression-doWhileStatementTest x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementWithBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.DoWhileStatement-doWhileStatementWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.DoWhileStatement-doWhileStatementWithTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement-doWhileStatementWithTest original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DoWhileStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.DocumentationComment-documentationComment :: Typed.TypedTerm String -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment-documentationComment description tags =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Typed.unTypedTerm description)},- Core.Field {- Core.fieldName = (Core.Name "tags"),- Core.fieldTerm = (Typed.unTypedTerm tags)}]}))---- | DSL accessor for the description field of hydra.typeScript.syntax.DocumentationComment-documentationCommentDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String-documentationCommentDescription x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),- Core.projectionFieldName = (Core.Name "description")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.DocumentationComment-documentationCommentDocumentationComment :: Typed.TypedName Syntax.DocumentationComment-documentationCommentDocumentationComment = Typed.TypedName (Core.Name "hydra.typeScript.syntax.DocumentationComment")---- | DSL accessor for the tags field of hydra.typeScript.syntax.DocumentationComment-documentationCommentTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag]-documentationCommentTags x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),- Core.projectionFieldName = (Core.Name "tags")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the description field of hydra.typeScript.syntax.DocumentationComment-documentationCommentWithDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationComment-documentationCommentWithDescription original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "tags"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),- Core.projectionFieldName = (Core.Name "tags")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the tags field of hydra.typeScript.syntax.DocumentationComment-documentationCommentWithTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment-documentationCommentWithTags original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationComment"),- Core.projectionFieldName = (Core.Name "description")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "tags"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.DocumentationTag-documentationTag :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag-documentationTag name type_ paramName description =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm name)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm type_)},- Core.Field {- Core.fieldName = (Core.Name "paramName"),- Core.fieldTerm = (Typed.unTypedTerm paramName)},- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Typed.unTypedTerm description)}]}))---- | DSL accessor for the description field of hydra.typeScript.syntax.DocumentationTag-documentationTagDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String-documentationTagDescription x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "description")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.DocumentationTag-documentationTagDocumentationTag :: Typed.TypedName Syntax.DocumentationTag-documentationTagDocumentationTag = Typed.TypedName (Core.Name "hydra.typeScript.syntax.DocumentationTag")---- | DSL accessor for the name field of hydra.typeScript.syntax.DocumentationTag-documentationTagName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String-documentationTagName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the paramName field of hydra.typeScript.syntax.DocumentationTag-documentationTagParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier)-documentationTagParamName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "paramName")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.DocumentationTag-documentationTagType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression)-documentationTagType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the description field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithDescription original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "paramName"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "paramName")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "paramName"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "paramName")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "description")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the paramName field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithParamName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "paramName"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "description")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.DocumentationTag-documentationTagWithType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.DocumentationTag-documentationTagWithType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "paramName"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "paramName")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "description"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.DocumentationTag"),- Core.projectionFieldName = (Core.Name "description")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclaration :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration-exportAllDeclaration exported source =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "exported"),- Core.fieldTerm = (Typed.unTypedTerm exported)},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Typed.unTypedTerm source)}]}))---- | DSL name token for hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationExportAllDeclaration :: Typed.TypedName Syntax.ExportAllDeclaration-exportAllDeclarationExportAllDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration")---- | DSL accessor for the exported field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier)-exportAllDeclarationExported x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),- Core.projectionFieldName = (Core.Name "exported")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the source field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral-exportAllDeclarationSource x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),- Core.projectionFieldName = (Core.Name "source")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the exported field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationWithExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ExportAllDeclaration-exportAllDeclarationWithExported original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "exported"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),- Core.projectionFieldName = (Core.Name "source")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the source field of hydra.typeScript.syntax.ExportAllDeclaration-exportAllDeclarationWithSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration-exportAllDeclarationWithSource original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "exported"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"),- Core.projectionFieldName = (Core.Name "exported")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the all variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationAll :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationAll x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "all"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the declaration variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationDeclaration :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationDeclaration x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "declaration"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the default variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationDefault :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationDefault x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "default"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ExportDeclaration-exportDeclarationExportDeclaration :: Typed.TypedName Syntax.ExportDeclaration-exportDeclarationExportDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ExportDeclaration")---- | DSL injection for the named variant of hydra.typeScript.syntax.ExportDeclaration-exportDeclarationNamed :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm Syntax.ExportDeclaration-exportDeclarationNamed x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportDeclaration"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "named"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ExportSpecifier-exportSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier-exportSpecifier local exported =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "local"),- Core.fieldTerm = (Typed.unTypedTerm local)},- Core.Field {- Core.fieldName = (Core.Name "exported"),- Core.fieldTerm = (Typed.unTypedTerm exported)}]}))---- | DSL name token for hydra.typeScript.syntax.ExportSpecifier-exportSpecifierExportSpecifier :: Typed.TypedName Syntax.ExportSpecifier-exportSpecifierExportSpecifier = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ExportSpecifier")---- | DSL accessor for the exported field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier-exportSpecifierExported x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),- Core.projectionFieldName = (Core.Name "exported")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the local field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier-exportSpecifierLocal x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),- Core.projectionFieldName = (Core.Name "local")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the exported field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierWithExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier-exportSpecifierWithExported original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "local"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),- Core.projectionFieldName = (Core.Name "local")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "exported"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the local field of hydra.typeScript.syntax.ExportSpecifier-exportSpecifierWithLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier-exportSpecifierWithLocal original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "local"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "exported"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ExportSpecifier"),- Core.projectionFieldName = (Core.Name "exported")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the array variant of hydra.typeScript.syntax.Expression-expressionArray :: Typed.TypedTerm Syntax.ArrayExpression -> Typed.TypedTerm Syntax.Expression-expressionArray x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "array"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the arrow variant of hydra.typeScript.syntax.Expression-expressionArrow :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.Expression-expressionArrow x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "arrow"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the asExpression variant of hydra.typeScript.syntax.Expression-expressionAsExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression-expressionAsExpression x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "asExpression"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the assignment variant of hydra.typeScript.syntax.Expression-expressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression-expressionAssignment x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "assignment"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the await variant of hydra.typeScript.syntax.Expression-expressionAwait :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression-expressionAwait x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "await"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the binary variant of hydra.typeScript.syntax.Expression-expressionBinary :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression-expressionBinary x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "binary"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the call variant of hydra.typeScript.syntax.Expression-expressionCall :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression-expressionCall x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "call"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the conditional variant of hydra.typeScript.syntax.Expression-expressionConditional :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression-expressionConditional x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "conditional"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Expression-expressionExpression :: Typed.TypedName Syntax.Expression-expressionExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Expression")---- | DSL injection for the function variant of hydra.typeScript.syntax.Expression-expressionFunction :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.Expression-expressionFunction x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "function"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the identifier variant of hydra.typeScript.syntax.Expression-expressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Expression-expressionIdentifier x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "identifier"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the literal variant of hydra.typeScript.syntax.Expression-expressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Expression-expressionLiteral x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "literal"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the member variant of hydra.typeScript.syntax.Expression-expressionMember :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression-expressionMember x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "member"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the new variant of hydra.typeScript.syntax.Expression-expressionNew :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression-expressionNew x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "new"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the object variant of hydra.typeScript.syntax.Expression-expressionObject :: Typed.TypedTerm Syntax.ObjectExpression -> Typed.TypedTerm Syntax.Expression-expressionObject x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the parenthesized variant of hydra.typeScript.syntax.Expression-expressionParenthesized :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression-expressionParenthesized x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "parenthesized"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the sequence variant of hydra.typeScript.syntax.Expression-expressionSequence :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression-expressionSequence x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "sequence"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the spread variant of hydra.typeScript.syntax.Expression-expressionSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression-expressionSpread x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "spread"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the this variant of hydra.typeScript.syntax.Expression-expressionThis :: Typed.TypedTerm Syntax.Expression-expressionThis =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "this"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the unary variant of hydra.typeScript.syntax.Expression-expressionUnary :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression-expressionUnary x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "unary"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the yield variant of hydra.typeScript.syntax.Expression-expressionYield :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Expression-expressionYield x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Expression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "yield"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ForInLeft-forInLeftForInLeft :: Typed.TypedName Syntax.ForInLeft-forInLeftForInLeft = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForInLeft")---- | DSL injection for the pattern variant of hydra.typeScript.syntax.ForInLeft-forInLeftPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.ForInLeft-forInLeftPattern x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInLeft"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "pattern"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variable variant of hydra.typeScript.syntax.ForInLeft-forInLeftVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInLeft-forInLeftVariable x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInLeft"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "variable"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ForInStatement-forInStatement :: Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement-forInStatement left right body =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm left)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm right)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ForInStatement-forInStatementBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement-forInStatementBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ForInStatement-forInStatementForInStatement :: Typed.TypedName Syntax.ForInStatement-forInStatementForInStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForInStatement")---- | DSL accessor for the left field of hydra.typeScript.syntax.ForInStatement-forInStatementLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft-forInStatementLeft x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.ForInStatement-forInStatementRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression-forInStatementRight x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ForInStatement-forInStatementWithBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement-forInStatementWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the left field of hydra.typeScript.syntax.ForInStatement-forInStatementWithLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForInStatement-forInStatementWithLeft original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.ForInStatement-forInStatementWithRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInStatement-forInStatementWithRight original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the expression variant of hydra.typeScript.syntax.ForInit-forInitExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInit-forInitExpression x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInit"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "expression"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ForInit-forInitForInit :: Typed.TypedName Syntax.ForInit-forInitForInit = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForInit")---- | DSL injection for the variable variant of hydra.typeScript.syntax.ForInit-forInitVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInit-forInitVariable x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ForInit"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "variable"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ForOfStatement-forOfStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatement await left right body =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "await"),- Core.fieldTerm = (Typed.unTypedTerm await)},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm left)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm right)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the await field of hydra.typeScript.syntax.ForOfStatement-forOfStatementAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool-forOfStatementAwait x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "await")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ForOfStatement-forOfStatementBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement-forOfStatementBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ForOfStatement-forOfStatementForOfStatement :: Typed.TypedName Syntax.ForOfStatement-forOfStatementForOfStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForOfStatement")---- | DSL accessor for the left field of hydra.typeScript.syntax.ForOfStatement-forOfStatementLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft-forOfStatementLeft x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the right field of hydra.typeScript.syntax.ForOfStatement-forOfStatementRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression-forOfStatementRight x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the await field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithAwait original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "await"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "await"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "await")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the left field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithLeft original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "await"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "await")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "right")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the right field of hydra.typeScript.syntax.ForOfStatement-forOfStatementWithRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForOfStatement-forOfStatementWithRight original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "await"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "await")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "left"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "left")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "right"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForOfStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.ForStatement-forStatement :: Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement-forStatement init test update body =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Typed.unTypedTerm init)},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm test)},- Core.Field {- Core.fieldName = (Core.Name "update"),- Core.fieldTerm = (Typed.unTypedTerm update)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ForStatement-forStatementBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement-forStatementBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ForStatement-forStatementForStatement :: Typed.TypedName Syntax.ForStatement-forStatementForStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ForStatement")---- | DSL accessor for the init field of hydra.typeScript.syntax.ForStatement-forStatementInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit)-forStatementInit x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "init")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the test field of hydra.typeScript.syntax.ForStatement-forStatementTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)-forStatementTest x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the update field of hydra.typeScript.syntax.ForStatement-forStatementUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)-forStatementUpdate x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "update")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.ForStatement-forStatementWithBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement-forStatementWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "init")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "update"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "update")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the init field of hydra.typeScript.syntax.ForStatement-forStatementWithInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm Syntax.ForStatement-forStatementWithInit original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "update"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "update")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.ForStatement-forStatementWithTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement-forStatementWithTest original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "init")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "update"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "update")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the update field of hydra.typeScript.syntax.ForStatement-forStatementWithUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement-forStatementWithUpdate original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "init")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "update"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ForStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionDeclaration-functionDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclaration id params body async generator =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm id)},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Typed.unTypedTerm params)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Typed.unTypedTerm async)},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Typed.unTypedTerm generator)}]}))---- | DSL accessor for the async field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool-functionDeclarationAsync x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement-functionDeclarationBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationFunctionDeclaration :: Typed.TypedName Syntax.FunctionDeclaration-functionDeclarationFunctionDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionDeclaration")---- | DSL accessor for the generator field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool-functionDeclarationGenerator x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the id field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier-functionDeclarationId x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the params field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern]-functionDeclarationParams x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the async field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithAsync original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithComments :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments-functionDeclarationWithComments body comments =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithCommentsBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-functionDeclarationWithCommentsComments x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsFunctionDeclarationWithComments :: Typed.TypedName Syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsFunctionDeclarationWithComments =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments")---- | DSL updater for the body field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments-functionDeclarationWithCommentsWithComments original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the generator field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithGenerator original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the id field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithId original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the params field of hydra.typeScript.syntax.FunctionDeclaration-functionDeclarationWithParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionDeclaration-functionDeclarationWithParams original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionDeclaration"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionExpression-functionExpression :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression-functionExpression id params body async generator =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm id)},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Typed.unTypedTerm params)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Typed.unTypedTerm async)},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Typed.unTypedTerm generator)}]}))---- | DSL accessor for the async field of hydra.typeScript.syntax.FunctionExpression-functionExpressionAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool-functionExpressionAsync x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.typeScript.syntax.FunctionExpression-functionExpressionBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement-functionExpressionBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.FunctionExpression-functionExpressionFunctionExpression :: Typed.TypedName Syntax.FunctionExpression-functionExpressionFunctionExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionExpression")---- | DSL accessor for the generator field of hydra.typeScript.syntax.FunctionExpression-functionExpressionGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool-functionExpressionGenerator x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the id field of hydra.typeScript.syntax.FunctionExpression-functionExpressionId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier)-functionExpressionId x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the params field of hydra.typeScript.syntax.FunctionExpression-functionExpressionParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern]-functionExpressionParams x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the async field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithAsync original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the generator field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithGenerator original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the id field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithId original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "params")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the params field of hydra.typeScript.syntax.FunctionExpression-functionExpressionWithParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionExpression-functionExpressionWithParams original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "params"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "async"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "async")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "generator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionExpression"),- Core.projectionFieldName = (Core.Name "generator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpression :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpression typeParameters parameters returnType =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Typed.unTypedTerm typeParameters)},- Core.Field {- Core.fieldName = (Core.Name "parameters"),- Core.fieldTerm = (Typed.unTypedTerm parameters)},- Core.Field {- Core.fieldName = (Core.Name "returnType"),- Core.fieldTerm = (Typed.unTypedTerm returnType)}]}))---- | DSL name token for hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionFunctionTypeExpression :: Typed.TypedName Syntax.FunctionTypeExpression-functionTypeExpressionFunctionTypeExpression =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression")---- | DSL accessor for the parameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]-functionTypeExpressionParameters x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "parameters")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the returnType field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-functionTypeExpressionReturnType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "returnType")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeParameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter]-functionTypeExpressionTypeParameters x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the parameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionWithParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpressionWithParameters original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "parameters"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "returnType"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "returnType")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the returnType field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionWithReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpressionWithReturnType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "parameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "parameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "returnType"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeParameters field of hydra.typeScript.syntax.FunctionTypeExpression-functionTypeExpressionWithTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.FunctionTypeExpression-functionTypeExpressionWithTypeParameters original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "parameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "parameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "returnType"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"),- Core.projectionFieldName = (Core.Name "returnType")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.Identifier wrapper-identifier :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Identifier-identifier x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.Identifier"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.Identifier-identifierIdentifier :: Typed.TypedName Syntax.Identifier-identifierIdentifier = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Identifier")---- | DSL constructor for hydra.typeScript.syntax.IfStatement-ifStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement-ifStatement test consequent alternate =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm test)},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Typed.unTypedTerm consequent)},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Typed.unTypedTerm alternate)}]}))---- | DSL accessor for the alternate field of hydra.typeScript.syntax.IfStatement-ifStatementAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement)-ifStatementAlternate x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "alternate")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the consequent field of hydra.typeScript.syntax.IfStatement-ifStatementConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement-ifStatementConsequent x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.IfStatement-ifStatementIfStatement :: Typed.TypedName Syntax.IfStatement-ifStatementIfStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.IfStatement")---- | DSL accessor for the test field of hydra.typeScript.syntax.IfStatement-ifStatementTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression-ifStatementTest x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the alternate field of hydra.typeScript.syntax.IfStatement-ifStatementWithAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement-ifStatementWithAlternate original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the consequent field of hydra.typeScript.syntax.IfStatement-ifStatementWithConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfStatement-ifStatementWithConsequent original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "alternate")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.IfStatement-ifStatementWithTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfStatement-ifStatementWithTest original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "alternate"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.IfStatement"),- Core.projectionFieldName = (Core.Name "alternate")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the default variant of hydra.typeScript.syntax.ImportClause-importClauseDefault :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.ImportClause-importClauseDefault x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportClause"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "default"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ImportClause-importClauseImportClause :: Typed.TypedName Syntax.ImportClause-importClauseImportClause = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportClause")---- | DSL injection for the named variant of hydra.typeScript.syntax.ImportClause-importClauseNamed :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.ImportClause-importClauseNamed x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportClause"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "named"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the namespace variant of hydra.typeScript.syntax.ImportClause-importClauseNamespace :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.ImportClause-importClauseNamespace x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportClause"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "namespace"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ImportDeclaration-importDeclaration :: Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclaration specifiers source =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "specifiers"),- Core.fieldTerm = (Typed.unTypedTerm specifiers)},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Typed.unTypedTerm source)}]}))---- | DSL name token for hydra.typeScript.syntax.ImportDeclaration-importDeclarationImportDeclaration :: Typed.TypedName Syntax.ImportDeclaration-importDeclarationImportDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportDeclaration")---- | DSL accessor for the source field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral-importDeclarationSource x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),- Core.projectionFieldName = (Core.Name "source")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the specifiers field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause]-importDeclarationSpecifiers x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),- Core.projectionFieldName = (Core.Name "specifiers")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the source field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationWithSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationWithSource original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "specifiers"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),- Core.projectionFieldName = (Core.Name "specifiers")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the specifiers field of hydra.typeScript.syntax.ImportDeclaration-importDeclarationWithSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationWithSpecifiers original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "specifiers"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportDeclaration"),- Core.projectionFieldName = (Core.Name "source")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.ImportDefaultSpecifier wrapper-importDefaultSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportDefaultSpecifier-importDefaultSpecifier x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ImportDefaultSpecifier-importDefaultSpecifierImportDefaultSpecifier :: Typed.TypedName Syntax.ImportDefaultSpecifier-importDefaultSpecifierImportDefaultSpecifier =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier")---- | DSL constructor for the hydra.typeScript.syntax.ImportNamespaceSpecifier wrapper-importNamespaceSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportNamespaceSpecifier-importNamespaceSpecifier x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ImportNamespaceSpecifier-importNamespaceSpecifierImportNamespaceSpecifier :: Typed.TypedName Syntax.ImportNamespaceSpecifier-importNamespaceSpecifierImportNamespaceSpecifier =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier")---- | DSL constructor for hydra.typeScript.syntax.ImportSpecifier-importSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier-importSpecifier imported local =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "imported"),- Core.fieldTerm = (Typed.unTypedTerm imported)},- Core.Field {- Core.fieldName = (Core.Name "local"),- Core.fieldTerm = (Typed.unTypedTerm local)}]}))---- | DSL name token for hydra.typeScript.syntax.ImportSpecifier-importSpecifierImportSpecifier :: Typed.TypedName Syntax.ImportSpecifier-importSpecifierImportSpecifier = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ImportSpecifier")---- | DSL accessor for the imported field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier-importSpecifierImported x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),- Core.projectionFieldName = (Core.Name "imported")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the local field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier-importSpecifierLocal x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),- Core.projectionFieldName = (Core.Name "local")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the imported field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierWithImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier-importSpecifierWithImported original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "imported"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "local"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),- Core.projectionFieldName = (Core.Name "local")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the local field of hydra.typeScript.syntax.ImportSpecifier-importSpecifierWithLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier-importSpecifierWithLocal original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "imported"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ImportSpecifier"),- Core.projectionFieldName = (Core.Name "imported")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "local"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclaration name typeParameters extends members =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm name)},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Typed.unTypedTerm typeParameters)},- Core.Field {- Core.fieldName = (Core.Name "extends"),- Core.fieldTerm = (Typed.unTypedTerm extends)},- Core.Field {- Core.fieldName = (Core.Name "members"),- Core.fieldTerm = (Typed.unTypedTerm members)}]}))---- | DSL accessor for the extends field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression]-interfaceDeclarationExtends x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "extends")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationInterfaceDeclaration :: Typed.TypedName Syntax.InterfaceDeclaration-interfaceDeclarationInterfaceDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration")---- | DSL accessor for the members field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature]-interfaceDeclarationMembers x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "members")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier-interfaceDeclarationName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeParameters field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]-interfaceDeclarationTypeParameters x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the extends field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithExtends original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "extends"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "members"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "members")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the members field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithMembers original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "extends"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "extends")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "members"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "extends"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "extends")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "members"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "members")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeParameters field of hydra.typeScript.syntax.InterfaceDeclaration-interfaceDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationWithTypeParameters original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "extends"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "extends")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "members"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"),- Core.projectionFieldName = (Core.Name "members")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.LabeledStatement-labeledStatement :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatement label body =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "label"),- Core.fieldTerm = (Typed.unTypedTerm label)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.LabeledStatement-labeledStatementBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement-labeledStatementBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the label field of hydra.typeScript.syntax.LabeledStatement-labeledStatementLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier-labeledStatementLabel x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),- Core.projectionFieldName = (Core.Name "label")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.LabeledStatement-labeledStatementLabeledStatement :: Typed.TypedName Syntax.LabeledStatement-labeledStatementLabeledStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.LabeledStatement")---- | DSL updater for the body field of hydra.typeScript.syntax.LabeledStatement-labeledStatementWithBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatementWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "label"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),- Core.projectionFieldName = (Core.Name "label")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the label field of hydra.typeScript.syntax.LabeledStatement-labeledStatementWithLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatementWithLabel original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "label"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.LabeledStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the bigInt variant of hydra.typeScript.syntax.Literal-literalBigInt :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Literal-literalBigInt x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bigInt"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the boolean variant of hydra.typeScript.syntax.Literal-literalBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Literal-literalBoolean x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "boolean"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Literal-literalLiteral :: Typed.TypedName Syntax.Literal-literalLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Literal")---- | DSL injection for the null variant of hydra.typeScript.syntax.Literal-literalNull :: Typed.TypedTerm Syntax.Literal-literalNull =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "null"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the number variant of hydra.typeScript.syntax.Literal-literalNumber :: Typed.TypedTerm Syntax.NumericLiteral -> Typed.TypedTerm Syntax.Literal-literalNumber x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "number"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the string variant of hydra.typeScript.syntax.Literal-literalString :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.Literal-literalString x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "string"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the template variant of hydra.typeScript.syntax.Literal-literalTemplate :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm Syntax.Literal-literalTemplate x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "template"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the undefined variant of hydra.typeScript.syntax.Literal-literalUndefined :: Typed.TypedTerm Syntax.Literal-literalUndefined =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Literal"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "undefined"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.MemberExpression-memberExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression-memberExpression object property computed optional =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Typed.unTypedTerm object)},- Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Typed.unTypedTerm property)},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Typed.unTypedTerm computed)},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Typed.unTypedTerm optional)}]}))---- | DSL accessor for the computed field of hydra.typeScript.syntax.MemberExpression-memberExpressionComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool-memberExpressionComputed x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.MemberExpression-memberExpressionMemberExpression :: Typed.TypedName Syntax.MemberExpression-memberExpressionMemberExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.MemberExpression")---- | DSL accessor for the object field of hydra.typeScript.syntax.MemberExpression-memberExpressionObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression-memberExpressionObject x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "object")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the optional field of hydra.typeScript.syntax.MemberExpression-memberExpressionOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool-memberExpressionOptional x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the property field of hydra.typeScript.syntax.MemberExpression-memberExpressionProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression-memberExpressionProperty x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "property")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the computed field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithComputed original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "object")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "property")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the object field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithObject original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "property")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the optional field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithOptional original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "object")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "property")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the property field of hydra.typeScript.syntax.MemberExpression-memberExpressionWithProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression-memberExpressionWithProperty original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "object")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MemberExpression"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.MethodDefinition-methodDefinition :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinition key value kind computed static =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Typed.unTypedTerm key)},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm value)},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Typed.unTypedTerm kind)},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Typed.unTypedTerm computed)},- Core.Field {- Core.fieldName = (Core.Name "static"),- Core.fieldTerm = (Typed.unTypedTerm static)}]}))---- | DSL accessor for the computed field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool-methodDefinitionComputed x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the key field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression-methodDefinitionKey x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the kind field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind-methodDefinitionKind x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.MethodDefinition-methodDefinitionMethodDefinition :: Typed.TypedName Syntax.MethodDefinition-methodDefinitionMethodDefinition = Typed.TypedName (Core.Name "hydra.typeScript.syntax.MethodDefinition")---- | DSL accessor for the static field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool-methodDefinitionStatic x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "static")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the value field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression-methodDefinitionValue x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the computed field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithComputed original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "static"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "static")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the key field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithKey original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "static"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "static")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the kind field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithKind original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "static"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "static")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the static field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithStatic original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "static"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.MethodDefinition-methodDefinitionWithValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodDefinition-methodDefinitionWithValue original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "static"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodDefinition"),- Core.projectionFieldName = (Core.Name "static")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the constructor variant of hydra.typeScript.syntax.MethodKind-methodKindConstructor :: Typed.TypedTerm Syntax.MethodKind-methodKindConstructor =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "constructor"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the get variant of hydra.typeScript.syntax.MethodKind-methodKindGet :: Typed.TypedTerm Syntax.MethodKind-methodKindGet =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "get"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the method variant of hydra.typeScript.syntax.MethodKind-methodKindMethod :: Typed.TypedTerm Syntax.MethodKind-methodKindMethod =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "method"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.MethodKind-methodKindMethodKind :: Typed.TypedName Syntax.MethodKind-methodKindMethodKind = Typed.TypedName (Core.Name "hydra.typeScript.syntax.MethodKind")---- | DSL injection for the set variant of hydra.typeScript.syntax.MethodKind-methodKindSet :: Typed.TypedTerm Syntax.MethodKind-methodKindSet =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.MethodKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "set"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the export variant of hydra.typeScript.syntax.ModuleItem-moduleItemExport :: Typed.TypedTerm Syntax.ExportDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemExport x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "export"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the import variant of hydra.typeScript.syntax.ModuleItem-moduleItemImport :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemImport x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "import"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the interface variant of hydra.typeScript.syntax.ModuleItem-moduleItemInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemInterface x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "interface"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.ModuleItem-moduleItemModuleItem :: Typed.TypedName Syntax.ModuleItem-moduleItemModuleItem = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ModuleItem")---- | DSL injection for the statement variant of hydra.typeScript.syntax.ModuleItem-moduleItemStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ModuleItem-moduleItemStatement x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "statement"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typeAlias variant of hydra.typeScript.syntax.ModuleItem-moduleItemTypeAlias :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.ModuleItem-moduleItemTypeAlias x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItem"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "typeAlias"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithComments :: Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments-moduleItemWithComments body comments =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem-moduleItemWithCommentsBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-moduleItemWithCommentsComments x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsModuleItemWithComments :: Typed.TypedName Syntax.ModuleItemWithComments-moduleItemWithCommentsModuleItemWithComments =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments")---- | DSL updater for the body field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsWithBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm Syntax.ModuleItemWithComments-moduleItemWithCommentsWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.ModuleItemWithComments-moduleItemWithCommentsWithComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments-moduleItemWithCommentsWithComments original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.NamedExport-namedExport :: Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport-namedExport specifiers source =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "specifiers"),- Core.fieldTerm = (Typed.unTypedTerm specifiers)},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Typed.unTypedTerm source)}]}))---- | DSL name token for hydra.typeScript.syntax.NamedExport-namedExportNamedExport :: Typed.TypedName Syntax.NamedExport-namedExportNamedExport = Typed.TypedName (Core.Name "hydra.typeScript.syntax.NamedExport")---- | DSL accessor for the source field of hydra.typeScript.syntax.NamedExport-namedExportSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral)-namedExportSource x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),- Core.projectionFieldName = (Core.Name "source")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the specifiers field of hydra.typeScript.syntax.NamedExport-namedExportSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier]-namedExportSpecifiers x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),- Core.projectionFieldName = (Core.Name "specifiers")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the source field of hydra.typeScript.syntax.NamedExport-namedExportWithSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport-namedExportWithSource original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "specifiers"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),- Core.projectionFieldName = (Core.Name "specifiers")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the specifiers field of hydra.typeScript.syntax.NamedExport-namedExportWithSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm Syntax.NamedExport-namedExportWithSpecifiers original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "specifiers"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "source"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.NamedExport"),- Core.projectionFieldName = (Core.Name "source")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the float variant of hydra.typeScript.syntax.NumericLiteral-numericLiteralFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.NumericLiteral-numericLiteralFloat x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.NumericLiteral"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "float"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the integer variant of hydra.typeScript.syntax.NumericLiteral-numericLiteralInteger :: Typed.TypedTerm I.Int64 -> Typed.TypedTerm Syntax.NumericLiteral-numericLiteralInteger x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.NumericLiteral"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "integer"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.NumericLiteral-numericLiteralNumericLiteral :: Typed.TypedName Syntax.NumericLiteral-numericLiteralNumericLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.NumericLiteral")---- | DSL constructor for hydra.typeScript.syntax.ObjectPattern-objectPattern :: Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern-objectPattern properties =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "properties"),- Core.fieldTerm = (Typed.unTypedTerm properties)}]}))---- | DSL name token for hydra.typeScript.syntax.ObjectPattern-objectPatternObjectPattern :: Typed.TypedName Syntax.ObjectPattern-objectPatternObjectPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ObjectPattern")---- | DSL accessor for the properties field of hydra.typeScript.syntax.ObjectPattern-objectPatternProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty]-objectPatternProperties x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPattern"),- Core.projectionFieldName = (Core.Name "properties")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ObjectPatternProperty-objectPatternPropertyObjectPatternProperty :: Typed.TypedName Syntax.ObjectPatternProperty-objectPatternPropertyObjectPatternProperty = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ObjectPatternProperty")---- | DSL injection for the property variant of hydra.typeScript.syntax.ObjectPatternProperty-objectPatternPropertyProperty :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.ObjectPatternProperty-objectPatternPropertyProperty x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPatternProperty"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "property"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the rest variant of hydra.typeScript.syntax.ObjectPatternProperty-objectPatternPropertyRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.ObjectPatternProperty-objectPatternPropertyRest x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPatternProperty"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "rest"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL updater for the properties field of hydra.typeScript.syntax.ObjectPattern-objectPatternWithProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern-objectPatternWithProperties original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ObjectPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "properties"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression-parameterizedTypeExpression base arguments =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "base"),- Core.fieldTerm = (Typed.unTypedTerm base)},- Core.Field {- Core.fieldName = (Core.Name "arguments"),- Core.fieldTerm = (Typed.unTypedTerm arguments)}]}))---- | DSL accessor for the arguments field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]-parameterizedTypeExpressionArguments x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),- Core.projectionFieldName = (Core.Name "arguments")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the base field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-parameterizedTypeExpressionBase x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),- Core.projectionFieldName = (Core.Name "base")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionParameterizedTypeExpression :: Typed.TypedName Syntax.ParameterizedTypeExpression-parameterizedTypeExpressionParameterizedTypeExpression =- Typed.TypedName (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression")---- | DSL updater for the arguments field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithArguments original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "base"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),- Core.projectionFieldName = (Core.Name "base")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "arguments"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the base field of hydra.typeScript.syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ParameterizedTypeExpression-parameterizedTypeExpressionWithBase original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "base"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "arguments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"),- Core.projectionFieldName = (Core.Name "arguments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the array variant of hydra.typeScript.syntax.Pattern-patternArray :: Typed.TypedTerm Syntax.ArrayPattern -> Typed.TypedTerm Syntax.Pattern-patternArray x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "array"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the assignment variant of hydra.typeScript.syntax.Pattern-patternAssignment :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern-patternAssignment x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "assignment"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the identifier variant of hydra.typeScript.syntax.Pattern-patternIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Pattern-patternIdentifier x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "identifier"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the object variant of hydra.typeScript.syntax.Pattern-patternObject :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm Syntax.Pattern-patternObject x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Pattern-patternPattern :: Typed.TypedName Syntax.Pattern-patternPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Pattern")---- | DSL injection for the rest variant of hydra.typeScript.syntax.Pattern-patternRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern-patternRest x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "rest"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typed variant of hydra.typeScript.syntax.Pattern-patternTyped :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern-patternTyped x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Pattern"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "typed"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.Program-program :: Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program-program body sourceType =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Program"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "sourceType"),- Core.fieldTerm = (Typed.unTypedTerm sourceType)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.Program-programBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem]-programBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.Program-programProgram :: Typed.TypedName Syntax.Program-programProgram = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Program")---- | DSL accessor for the sourceType field of hydra.typeScript.syntax.Program-programSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType-programSourceType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),- Core.projectionFieldName = (Core.Name "sourceType")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.typeScript.syntax.Program-programWithBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.Program-programWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Program"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "sourceType"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),- Core.projectionFieldName = (Core.Name "sourceType")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the sourceType field of hydra.typeScript.syntax.Program-programWithSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program-programWithSourceType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Program"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Program"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "sourceType"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.Property-property :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property-property key value kind computed shorthand =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Typed.unTypedTerm key)},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm value)},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Typed.unTypedTerm kind)},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Typed.unTypedTerm computed)},- Core.Field {- Core.fieldName = (Core.Name "shorthand"),- Core.fieldTerm = (Typed.unTypedTerm shorthand)}]}))---- | DSL accessor for the computed field of hydra.typeScript.syntax.Property-propertyComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool-propertyComputed x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the key field of hydra.typeScript.syntax.Property-propertyKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression-propertyKey x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the kind field of hydra.typeScript.syntax.Property-propertyKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind-propertyKind x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the get variant of hydra.typeScript.syntax.PropertyKind-propertyKindGet :: Typed.TypedTerm Syntax.PropertyKind-propertyKindGet =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertyKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "get"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the init variant of hydra.typeScript.syntax.PropertyKind-propertyKindInit :: Typed.TypedTerm Syntax.PropertyKind-propertyKindInit =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertyKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.PropertyKind-propertyKindPropertyKind :: Typed.TypedName Syntax.PropertyKind-propertyKindPropertyKind = Typed.TypedName (Core.Name "hydra.typeScript.syntax.PropertyKind")---- | DSL injection for the set variant of hydra.typeScript.syntax.PropertyKind-propertyKindSet :: Typed.TypedTerm Syntax.PropertyKind-propertyKindSet =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertyKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "set"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.Property-propertyProperty :: Typed.TypedName Syntax.Property-propertyProperty = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Property")---- | DSL accessor for the shorthand field of hydra.typeScript.syntax.Property-propertyShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool-propertyShorthand x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "shorthand")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.typeScript.syntax.PropertySignature-propertySignature :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature-propertySignature name type_ optional readonly comments =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm name)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm type_)},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Typed.unTypedTerm optional)},- Core.Field {- Core.fieldName = (Core.Name "readonly"),- Core.fieldTerm = (Typed.unTypedTerm readonly)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.PropertySignature-propertySignatureComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-propertySignatureComments x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.typeScript.syntax.PropertySignature-propertySignatureName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier-propertySignatureName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the optional field of hydra.typeScript.syntax.PropertySignature-propertySignatureOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool-propertySignatureOptional x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.PropertySignature-propertySignaturePropertySignature :: Typed.TypedName Syntax.PropertySignature-propertySignaturePropertySignature = Typed.TypedName (Core.Name "hydra.typeScript.syntax.PropertySignature")---- | DSL accessor for the readonly field of hydra.typeScript.syntax.PropertySignature-propertySignatureReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool-propertySignatureReadonly x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "readonly")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.PropertySignature-propertySignatureType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression-propertySignatureType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithComments original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "readonly"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "readonly")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "readonly"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "readonly")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the optional field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithOptional original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "readonly"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "readonly")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the readonly field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithReadonly original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "readonly"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.PropertySignature-propertySignatureWithType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.PropertySignature-propertySignatureWithType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "optional")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "readonly"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "readonly")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.PropertySignature"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL accessor for the value field of hydra.typeScript.syntax.Property-propertyValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression-propertyValue x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the computed field of hydra.typeScript.syntax.Property-propertyWithComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property-propertyWithComputed original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "shorthand"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "shorthand")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the key field of hydra.typeScript.syntax.Property-propertyWithKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property-propertyWithKey original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "shorthand"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "shorthand")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the kind field of hydra.typeScript.syntax.Property-propertyWithKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Syntax.Property-propertyWithKind original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "shorthand"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "shorthand")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the shorthand field of hydra.typeScript.syntax.Property-propertyWithShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property-propertyWithShorthand original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "shorthand"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.Property-propertyWithValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property-propertyWithValue original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "key"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "key")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "computed"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "computed")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "shorthand"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.Property"),- Core.projectionFieldName = (Core.Name "shorthand")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.RestElement wrapper-restElement :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.RestElement-restElement x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.RestElement"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.RestElement-restElementRestElement :: Typed.TypedName Syntax.RestElement-restElementRestElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.RestElement")---- | DSL injection for the module variant of hydra.typeScript.syntax.SourceType-sourceTypeModule :: Typed.TypedTerm Syntax.SourceType-sourceTypeModule =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.SourceType"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "module"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the script variant of hydra.typeScript.syntax.SourceType-sourceTypeScript :: Typed.TypedTerm Syntax.SourceType-sourceTypeScript =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.SourceType"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "script"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.SourceType-sourceTypeSourceType :: Typed.TypedName Syntax.SourceType-sourceTypeSourceType = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SourceType")---- | DSL constructor for the hydra.typeScript.syntax.SpreadElement wrapper-spreadElement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SpreadElement-spreadElement x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.SpreadElement"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.SpreadElement-spreadElementSpreadElement :: Typed.TypedName Syntax.SpreadElement-spreadElementSpreadElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SpreadElement")---- | DSL injection for the block variant of hydra.typeScript.syntax.Statement-statementBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.Statement-statementBlock x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "block"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the break variant of hydra.typeScript.syntax.Statement-statementBreak :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm Syntax.Statement-statementBreak x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "break"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the classDeclaration variant of hydra.typeScript.syntax.Statement-statementClassDeclaration :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Statement-statementClassDeclaration x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "classDeclaration"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the continue variant of hydra.typeScript.syntax.Statement-statementContinue :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm Syntax.Statement-statementContinue x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "continue"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the debugger variant of hydra.typeScript.syntax.Statement-statementDebugger :: Typed.TypedTerm Syntax.Statement-statementDebugger =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "debugger"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the doWhile variant of hydra.typeScript.syntax.Statement-statementDoWhile :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement-statementDoWhile x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "doWhile"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the empty variant of hydra.typeScript.syntax.Statement-statementEmpty :: Typed.TypedTerm Syntax.Statement-statementEmpty =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "empty"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the expression variant of hydra.typeScript.syntax.Statement-statementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement-statementExpression x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "expression"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the for variant of hydra.typeScript.syntax.Statement-statementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement-statementFor x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "for"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the forIn variant of hydra.typeScript.syntax.Statement-statementForIn :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement-statementForIn x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "forIn"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the forOf variant of hydra.typeScript.syntax.Statement-statementForOf :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement-statementForOf x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "forOf"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the functionDeclaration variant of hydra.typeScript.syntax.Statement-statementFunctionDeclaration :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Statement-statementFunctionDeclaration x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "functionDeclaration"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the if variant of hydra.typeScript.syntax.Statement-statementIf :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement-statementIf x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "if"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the labeled variant of hydra.typeScript.syntax.Statement-statementLabeled :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement-statementLabeled x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "labeled"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the return variant of hydra.typeScript.syntax.Statement-statementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.Statement-statementReturn x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "return"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.Statement-statementStatement :: Typed.TypedName Syntax.Statement-statementStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.Statement")---- | DSL injection for the switch variant of hydra.typeScript.syntax.Statement-statementSwitch :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Statement-statementSwitch x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "switch"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the throw variant of hydra.typeScript.syntax.Statement-statementThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Statement-statementThrow x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "throw"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the try variant of hydra.typeScript.syntax.Statement-statementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.Statement-statementTry x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "try"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variableDeclaration variant of hydra.typeScript.syntax.Statement-statementVariableDeclaration :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.Statement-statementVariableDeclaration x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "variableDeclaration"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the while variant of hydra.typeScript.syntax.Statement-statementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement-statementWhile x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.Statement"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "while"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.typeScript.syntax.StatementWithComments-statementWithComments :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments-statementWithComments body comments =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement-statementWithCommentsBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the comments field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)-statementWithCommentsComments x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.StatementWithComments-statementWithCommentsStatementWithComments :: Typed.TypedName Syntax.StatementWithComments-statementWithCommentsStatementWithComments = Typed.TypedName (Core.Name "hydra.typeScript.syntax.StatementWithComments")---- | DSL updater for the body field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsWithBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.StatementWithComments-statementWithCommentsWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),- Core.projectionFieldName = (Core.Name "comments")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the comments field of hydra.typeScript.syntax.StatementWithComments-statementWithCommentsWithComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments-statementWithCommentsWithComments original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StatementWithComments"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "comments"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.typeScript.syntax.StringLiteral-stringLiteral :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral-stringLiteral value singleQuote =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm value)},- Core.Field {- Core.fieldName = (Core.Name "singleQuote"),- Core.fieldTerm = (Typed.unTypedTerm singleQuote)}]}))---- | DSL accessor for the singleQuote field of hydra.typeScript.syntax.StringLiteral-stringLiteralSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool-stringLiteralSingleQuote x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),- Core.projectionFieldName = (Core.Name "singleQuote")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.StringLiteral-stringLiteralStringLiteral :: Typed.TypedName Syntax.StringLiteral-stringLiteralStringLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.StringLiteral")---- | DSL accessor for the value field of hydra.typeScript.syntax.StringLiteral-stringLiteralValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String-stringLiteralValue x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the singleQuote field of hydra.typeScript.syntax.StringLiteral-stringLiteralWithSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral-stringLiteralWithSingleQuote original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "singleQuote"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.StringLiteral-stringLiteralWithValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.StringLiteral-stringLiteralWithValue original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "singleQuote"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.StringLiteral"),- Core.projectionFieldName = (Core.Name "singleQuote")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.SwitchCase-switchCase :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase-switchCase test consequent =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm test)},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Typed.unTypedTerm consequent)}]}))---- | DSL accessor for the consequent field of hydra.typeScript.syntax.SwitchCase-switchCaseConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement]-switchCaseConsequent x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.SwitchCase-switchCaseSwitchCase :: Typed.TypedName Syntax.SwitchCase-switchCaseSwitchCase = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SwitchCase")---- | DSL accessor for the test field of hydra.typeScript.syntax.SwitchCase-switchCaseTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression)-switchCaseTest x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the consequent field of hydra.typeScript.syntax.SwitchCase-switchCaseWithConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase-switchCaseWithConsequent original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.SwitchCase-switchCaseWithTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SwitchCase-switchCaseWithTest original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "consequent"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchCase"),- Core.projectionFieldName = (Core.Name "consequent")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.SwitchStatement-switchStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement-switchStatement discriminant cases =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "discriminant"),- Core.fieldTerm = (Typed.unTypedTerm discriminant)},- Core.Field {- Core.fieldName = (Core.Name "cases"),- Core.fieldTerm = (Typed.unTypedTerm cases)}]}))---- | DSL accessor for the cases field of hydra.typeScript.syntax.SwitchStatement-switchStatementCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase]-switchStatementCases x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),- Core.projectionFieldName = (Core.Name "cases")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the discriminant field of hydra.typeScript.syntax.SwitchStatement-switchStatementDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression-switchStatementDiscriminant x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),- Core.projectionFieldName = (Core.Name "discriminant")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.SwitchStatement-switchStatementSwitchStatement :: Typed.TypedName Syntax.SwitchStatement-switchStatementSwitchStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.SwitchStatement")---- | DSL updater for the cases field of hydra.typeScript.syntax.SwitchStatement-switchStatementWithCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement-switchStatementWithCases original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "discriminant"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),- Core.projectionFieldName = (Core.Name "discriminant")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "cases"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the discriminant field of hydra.typeScript.syntax.SwitchStatement-switchStatementWithDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchStatement-switchStatementWithDiscriminant original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "discriminant"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "cases"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.SwitchStatement"),- Core.projectionFieldName = (Core.Name "cases")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TemplateElement-templateElement :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement-templateElement value tail =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm value)},- Core.Field {- Core.fieldName = (Core.Name "tail"),- Core.fieldTerm = (Typed.unTypedTerm tail)}]}))---- | DSL accessor for the tail field of hydra.typeScript.syntax.TemplateElement-templateElementTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool-templateElementTail x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),- Core.projectionFieldName = (Core.Name "tail")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TemplateElement-templateElementTemplateElement :: Typed.TypedName Syntax.TemplateElement-templateElementTemplateElement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TemplateElement")---- | DSL accessor for the value field of hydra.typeScript.syntax.TemplateElement-templateElementValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String-templateElementValue x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the tail field of hydra.typeScript.syntax.TemplateElement-templateElementWithTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement-templateElementWithTail original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),- Core.projectionFieldName = (Core.Name "value")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "tail"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.typeScript.syntax.TemplateElement-templateElementWithValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.TemplateElement-templateElementWithValue original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "value"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "tail"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateElement"),- Core.projectionFieldName = (Core.Name "tail")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TemplateLiteral-templateLiteral :: Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral-templateLiteral quasis expressions =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "quasis"),- Core.fieldTerm = (Typed.unTypedTerm quasis)},- Core.Field {- Core.fieldName = (Core.Name "expressions"),- Core.fieldTerm = (Typed.unTypedTerm expressions)}]}))---- | DSL accessor for the expressions field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression]-templateLiteralExpressions x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),- Core.projectionFieldName = (Core.Name "expressions")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the quasis field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement]-templateLiteralQuasis x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),- Core.projectionFieldName = (Core.Name "quasis")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TemplateLiteral-templateLiteralTemplateLiteral :: Typed.TypedName Syntax.TemplateLiteral-templateLiteralTemplateLiteral = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TemplateLiteral")---- | DSL updater for the expressions field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralWithExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral-templateLiteralWithExpressions original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "quasis"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),- Core.projectionFieldName = (Core.Name "quasis")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "expressions"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the quasis field of hydra.typeScript.syntax.TemplateLiteral-templateLiteralWithQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm Syntax.TemplateLiteral-templateLiteralWithQuasis original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "quasis"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "expressions"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TemplateLiteral"),- Core.projectionFieldName = (Core.Name "expressions")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.ThrowStatement wrapper-throwStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ThrowStatement-throwStatement x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.ThrowStatement"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.ThrowStatement-throwStatementThrowStatement :: Typed.TypedName Syntax.ThrowStatement-throwStatementThrowStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.ThrowStatement")---- | DSL constructor for hydra.typeScript.syntax.TryStatement-tryStatement :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement-tryStatement block handler finalizer =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "block"),- Core.fieldTerm = (Typed.unTypedTerm block)},- Core.Field {- Core.fieldName = (Core.Name "handler"),- Core.fieldTerm = (Typed.unTypedTerm handler)},- Core.Field {- Core.fieldName = (Core.Name "finalizer"),- Core.fieldTerm = (Typed.unTypedTerm finalizer)}]}))---- | DSL accessor for the block field of hydra.typeScript.syntax.TryStatement-tryStatementBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement-tryStatementBlock x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "block")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the finalizer field of hydra.typeScript.syntax.TryStatement-tryStatementFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement)-tryStatementFinalizer x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "finalizer")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the handler field of hydra.typeScript.syntax.TryStatement-tryStatementHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause)-tryStatementHandler x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "handler")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TryStatement-tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement-tryStatementTryStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TryStatement")---- | DSL updater for the block field of hydra.typeScript.syntax.TryStatement-tryStatementWithBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithBlock original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "block"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "handler"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "handler")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "finalizer"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "finalizer")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the finalizer field of hydra.typeScript.syntax.TryStatement-tryStatementWithFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithFinalizer original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "block"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "block")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "handler"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "handler")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "finalizer"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the handler field of hydra.typeScript.syntax.TryStatement-tryStatementWithHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithHandler original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "block"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "block")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "handler"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "finalizer"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TryStatement"),- Core.projectionFieldName = (Core.Name "finalizer")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclaration name typeParameters type_ =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm name)},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Typed.unTypedTerm typeParameters)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL accessor for the name field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier-typeAliasDeclarationName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression-typeAliasDeclarationType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationTypeAliasDeclaration :: Typed.TypedName Syntax.TypeAliasDeclaration-typeAliasDeclarationTypeAliasDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration")---- | DSL accessor for the typeParameters field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]-typeAliasDeclarationTypeParameters x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the name field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationWithName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclarationWithName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationWithType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclarationWithType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "typeParameters")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeParameters field of hydra.typeScript.syntax.TypeAliasDeclaration-typeAliasDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeAliasDeclaration-typeAliasDeclarationWithTypeParameters original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "typeParameters"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.typeScript.syntax.TypeAnnotation wrapper-typeAnnotation :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAnnotation-typeAnnotation x =- Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {- Core.wrappedTermTypeName = (Core.Name "hydra.typeScript.syntax.TypeAnnotation"),- Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypeAnnotation-typeAnnotationTypeAnnotation :: Typed.TypedName Syntax.TypeAnnotation-typeAnnotationTypeAnnotation = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeAnnotation")---- | DSL injection for the any variant of hydra.typeScript.syntax.TypeExpression-typeExpressionAny :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionAny =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "any"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the array variant of hydra.typeScript.syntax.TypeExpression-typeExpressionArray :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionArray x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "array"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the function variant of hydra.typeScript.syntax.TypeExpression-typeExpressionFunction :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionFunction x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "function"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the identifier variant of hydra.typeScript.syntax.TypeExpression-typeExpressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionIdentifier x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "identifier"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the intersection variant of hydra.typeScript.syntax.TypeExpression-typeExpressionIntersection :: Typed.TypedTerm Syntax.IntersectionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionIntersection x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "intersection"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the literal variant of hydra.typeScript.syntax.TypeExpression-typeExpressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionLiteral x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "literal"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the never variant of hydra.typeScript.syntax.TypeExpression-typeExpressionNever :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionNever =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "never"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the object variant of hydra.typeScript.syntax.TypeExpression-typeExpressionObject :: Typed.TypedTerm Syntax.ObjectTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionObject x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "object"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the optional variant of hydra.typeScript.syntax.TypeExpression-typeExpressionOptional :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionOptional x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "optional"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the parameterized variant of hydra.typeScript.syntax.TypeExpression-typeExpressionParameterized :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionParameterized x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "parameterized"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the readonly variant of hydra.typeScript.syntax.TypeExpression-typeExpressionReadonly :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionReadonly x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "readonly"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the tuple variant of hydra.typeScript.syntax.TypeExpression-typeExpressionTuple :: Typed.TypedTerm Syntax.TupleTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionTuple x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "tuple"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.typeScript.syntax.TypeExpression-typeExpressionTypeExpression :: Typed.TypedName Syntax.TypeExpression-typeExpressionTypeExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeExpression")---- | DSL injection for the union variant of hydra.typeScript.syntax.TypeExpression-typeExpressionUnion :: Typed.TypedTerm Syntax.UnionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-typeExpressionUnion x =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "union"),- Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the unknown variant of hydra.typeScript.syntax.TypeExpression-typeExpressionUnknown :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionUnknown =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "unknown"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the void variant of hydra.typeScript.syntax.TypeExpression-typeExpressionVoid :: Typed.TypedTerm Syntax.TypeExpression-typeExpressionVoid =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeExpression"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "void"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.TypeParameter-typeParameter :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter-typeParameter name constraint default_ =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm name)},- Core.Field {- Core.fieldName = (Core.Name "constraint"),- Core.fieldTerm = (Typed.unTypedTerm constraint)},- Core.Field {- Core.fieldName = (Core.Name "default"),- Core.fieldTerm = (Typed.unTypedTerm default_)}]}))---- | DSL accessor for the constraint field of hydra.typeScript.syntax.TypeParameter-typeParameterConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)-typeParameterConstraint x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "constraint")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the default field of hydra.typeScript.syntax.TypeParameter-typeParameterDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)-typeParameterDefault x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "default")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.typeScript.syntax.TypeParameter-typeParameterName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier-typeParameterName x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypeParameter-typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter-typeParameterTypeParameter = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypeParameter")---- | DSL updater for the constraint field of hydra.typeScript.syntax.TypeParameter-typeParameterWithConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithConstraint original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "constraint"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "default"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "default")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the default field of hydra.typeScript.syntax.TypeParameter-typeParameterWithDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithDefault original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "name")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "constraint"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "constraint")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "default"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.typeScript.syntax.TypeParameter-typeParameterWithName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithName original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "name"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "constraint"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "constraint")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "default"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypeParameter"),- Core.projectionFieldName = (Core.Name "default")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.TypedPattern-typedPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern-typedPattern pattern type_ =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "pattern"),- Core.fieldTerm = (Typed.unTypedTerm pattern)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm type_)}]}))---- | DSL accessor for the pattern field of hydra.typeScript.syntax.TypedPattern-typedPatternPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern-typedPatternPattern x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),- Core.projectionFieldName = (Core.Name "pattern")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.typeScript.syntax.TypedPattern-typedPatternType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression-typedPatternType x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.TypedPattern-typedPatternTypedPattern :: Typed.TypedName Syntax.TypedPattern-typedPatternTypedPattern = Typed.TypedName (Core.Name "hydra.typeScript.syntax.TypedPattern")---- | DSL updater for the pattern field of hydra.typeScript.syntax.TypedPattern-typedPatternWithPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypedPattern-typedPatternWithPattern original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "pattern"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),- Core.projectionFieldName = (Core.Name "type")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.typeScript.syntax.TypedPattern-typedPatternWithType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern-typedPatternWithType original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "pattern"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.TypedPattern"),- Core.projectionFieldName = (Core.Name "pattern")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "type"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL accessor for the body of hydra.typeScript.syntax.ArrayTypeExpression-unArrayTypeExpression :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression-unArrayTypeExpression x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ArrayTypeExpression")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.Identifier-unIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm String-unIdentifier x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.Identifier")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.ImportDefaultSpecifier-unImportDefaultSpecifier :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.Identifier-unImportDefaultSpecifier x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.ImportNamespaceSpecifier-unImportNamespaceSpecifier :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.Identifier-unImportNamespaceSpecifier x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.RestElement-unRestElement :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern-unRestElement x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.RestElement")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.SpreadElement-unSpreadElement :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression-unSpreadElement x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.SpreadElement")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.ThrowStatement-unThrowStatement :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Expression-unThrowStatement x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.ThrowStatement")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.typeScript.syntax.TypeAnnotation-unTypeAnnotation :: Typed.TypedTerm Syntax.TypeAnnotation -> Typed.TypedTerm Syntax.TypeExpression-unTypeAnnotation x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.typeScript.syntax.TypeAnnotation")),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.typeScript.syntax.UnaryExpression-unaryExpression :: Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpression operator argument prefix =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Typed.unTypedTerm operator)},- Core.Field {- Core.fieldName = (Core.Name "argument"),- Core.fieldTerm = (Typed.unTypedTerm argument)},- Core.Field {- Core.fieldName = (Core.Name "prefix"),- Core.fieldTerm = (Typed.unTypedTerm prefix)}]}))---- | DSL accessor for the argument field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression-unaryExpressionArgument x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "argument")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the operator field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator-unaryExpressionOperator x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the prefix field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool-unaryExpressionPrefix x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "prefix")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.UnaryExpression-unaryExpressionUnaryExpression :: Typed.TypedName Syntax.UnaryExpression-unaryExpressionUnaryExpression = Typed.TypedName (Core.Name "hydra.typeScript.syntax.UnaryExpression")---- | DSL updater for the argument field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionWithArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionWithArgument original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "argument"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "prefix"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "prefix")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the operator field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionWithOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionWithOperator original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "argument"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "argument")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "prefix"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "prefix")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the prefix field of hydra.typeScript.syntax.UnaryExpression-unaryExpressionWithPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionWithPrefix original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "operator"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "operator")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "argument"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryExpression"),- Core.projectionFieldName = (Core.Name "argument")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "prefix"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the bitwiseNot variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorBitwiseNot :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorBitwiseNot =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "bitwiseNot"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the decrement variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorDecrement :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorDecrement =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "decrement"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the delete variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorDelete :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorDelete =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "delete"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the increment variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorIncrement :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorIncrement =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "increment"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the negate variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorNegate :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorNegate =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "negate"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the not variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorNot :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorNot =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "not"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the plus variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorPlus :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorPlus =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "plus"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the typeof variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorTypeof :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorTypeof =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "typeof"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.UnaryOperator-unaryOperatorUnaryOperator :: Typed.TypedName Syntax.UnaryOperator-unaryOperatorUnaryOperator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.UnaryOperator")---- | DSL injection for the void variant of hydra.typeScript.syntax.UnaryOperator-unaryOperatorVoid :: Typed.TypedTerm Syntax.UnaryOperator-unaryOperatorVoid =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.UnaryOperator"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "void"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.typeScript.syntax.VariableDeclaration-variableDeclaration :: Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration-variableDeclaration kind declarations =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Typed.unTypedTerm kind)},- Core.Field {- Core.fieldName = (Core.Name "declarations"),- Core.fieldTerm = (Typed.unTypedTerm declarations)}]}))---- | DSL accessor for the declarations field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]-variableDeclarationDeclarations x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),- Core.projectionFieldName = (Core.Name "declarations")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the kind field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind-variableDeclarationKind x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.VariableDeclaration-variableDeclarationVariableDeclaration :: Typed.TypedName Syntax.VariableDeclaration-variableDeclarationVariableDeclaration = Typed.TypedName (Core.Name "hydra.typeScript.syntax.VariableDeclaration")---- | DSL updater for the declarations field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationWithDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration-variableDeclarationWithDeclarations original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),- Core.projectionFieldName = (Core.Name "kind")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "declarations"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the kind field of hydra.typeScript.syntax.VariableDeclaration-variableDeclarationWithKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm Syntax.VariableDeclaration-variableDeclarationWithKind original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "kind"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "declarations"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclaration"),- Core.projectionFieldName = (Core.Name "declarations")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.typeScript.syntax.VariableDeclarator-variableDeclarator :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclarator id init =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm id)},- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Typed.unTypedTerm init)}]}))---- | DSL accessor for the id field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern-variableDeclaratorId x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the init field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression)-variableDeclaratorInit x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),- Core.projectionFieldName = (Core.Name "init")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorVariableDeclarator :: Typed.TypedName Syntax.VariableDeclarator-variableDeclaratorVariableDeclarator = Typed.TypedName (Core.Name "hydra.typeScript.syntax.VariableDeclarator")---- | DSL updater for the id field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorWithId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclaratorWithId original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),- Core.projectionFieldName = (Core.Name "init")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the init field of hydra.typeScript.syntax.VariableDeclarator-variableDeclaratorWithInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclaratorWithInit original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "id"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableDeclarator"),- Core.projectionFieldName = (Core.Name "id")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "init"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the const variant of hydra.typeScript.syntax.VariableKind-variableKindConst :: Typed.TypedTerm Syntax.VariableKind-variableKindConst =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "const"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the let variant of hydra.typeScript.syntax.VariableKind-variableKindLet :: Typed.TypedTerm Syntax.VariableKind-variableKindLet =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "let"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the var variant of hydra.typeScript.syntax.VariableKind-variableKindVar :: Typed.TypedTerm Syntax.VariableKind-variableKindVar =- Typed.TypedTerm (Core.TermInject (Core.Injection {- Core.injectionTypeName = (Core.Name "hydra.typeScript.syntax.VariableKind"),- Core.injectionField = Core.Field {- Core.fieldName = (Core.Name "var"),- Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.typeScript.syntax.VariableKind-variableKindVariableKind :: Typed.TypedName Syntax.VariableKind-variableKindVariableKind = Typed.TypedName (Core.Name "hydra.typeScript.syntax.VariableKind")---- | DSL constructor for hydra.typeScript.syntax.WhileStatement-whileStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement-whileStatement test body =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm test)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.typeScript.syntax.WhileStatement-whileStatementBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement-whileStatementBody x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the test field of hydra.typeScript.syntax.WhileStatement-whileStatementTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression-whileStatementTest x =- Typed.TypedTerm (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.typeScript.syntax.WhileStatement-whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement-whileStatementWhileStatement = Typed.TypedName (Core.Name "hydra.typeScript.syntax.WhileStatement")---- | DSL updater for the body field of hydra.typeScript.syntax.WhileStatement-whileStatementWithBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement-whileStatementWithBody original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),- Core.projectionFieldName = (Core.Name "test")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the test field of hydra.typeScript.syntax.WhileStatement-whileStatementWithTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.WhileStatement-whileStatementWithTest original newVal =- Typed.TypedTerm (Core.TermRecord (Core.Record {- Core.recordTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),- Core.recordFields = [- Core.Field {- Core.fieldName = (Core.Name "test"),- Core.fieldTerm = (Typed.unTypedTerm newVal)},- Core.Field {- Core.fieldName = (Core.Name "body"),- Core.fieldTerm = (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermProject (Core.Projection {- Core.projectionTypeName = (Core.Name "hydra.typeScript.syntax.WhileStatement"),- Core.projectionFieldName = (Core.Name "body")})),- Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
− src/main/haskell/Hydra/Overlay/Haskell/Dsl/TypeScript/Helpers.hs
@@ -1,623 +0,0 @@--- | A DSL for constructing TypeScript syntax trees in Haskell.-module Hydra.Overlay.Haskell.Dsl.TypeScript.Helpers where--import Hydra.TypeScript.Syntax-import qualified Data.Int as I----- * Identifiers---- | Create an identifier--- Example: ident "foo"-ident :: String -> Identifier-ident = Identifier---- | Create a qualified name from a list of strings--- Example: qualifiedName ["module", "submodule", "name"]-qualifiedName :: [String] -> QualifiedName-qualifiedName = fmap Identifier----- * Literals---- | Create a string literal with double quotes--- Example: stringLit "hello"-stringLit :: String -> Literal-stringLit s = LiteralString $ StringLiteral s False---- | Create a string literal with single quotes--- Example: stringLitSingle "hello"-stringLitSingle :: String -> Literal-stringLitSingle s = LiteralString $ StringLiteral s True---- | Create an integer literal--- Example: intLit 42-intLit :: I.Int64 -> Literal-intLit = LiteralNumber . NumericLiteralInteger---- | Create a floating-point literal--- Example: floatLit 3.14-floatLit :: Double -> Literal-floatLit = LiteralNumber . NumericLiteralFloat---- | Create a boolean literal--- Example: boolLit True-boolLit :: Bool -> Literal-boolLit = LiteralBoolean---- | The null literal-nullLit :: Literal-nullLit = LiteralNull---- | The undefined literal-undefinedLit :: Literal-undefinedLit = LiteralUndefined---- | Create a BigInt literal--- Example: bigIntLit 123-bigIntLit :: Integer -> Literal-bigIntLit = LiteralBigInt----- * Expressions---- | Create an identifier expression--- Example: identExpr "foo"-identExpr :: String -> Expression-identExpr = ExpressionIdentifier . ident---- | Create a literal expression--- Example: litExpr (stringLit "hello")-litExpr :: Literal -> Expression-litExpr = ExpressionLiteral---- | Create a string expression--- Example: stringExpr "hello"-stringExpr :: String -> Expression-stringExpr = litExpr . stringLit---- | Create an integer expression--- Example: intExpr 42-intExpr :: I.Int64 -> Expression-intExpr = litExpr . intLit---- | Create a floating-point expression--- Example: floatExpr 3.14-floatExpr :: Double -> Expression-floatExpr = litExpr . floatLit---- | Create a boolean expression--- Example: boolExpr True-boolExpr :: Bool -> Expression-boolExpr = litExpr . boolLit---- | The null expression-nullExpr :: Expression-nullExpr = litExpr nullLit---- | The undefined expression-undefinedExpr :: Expression-undefinedExpr = litExpr undefinedLit---- | Create an array expression--- Example: arrayExpr [intExpr 1, intExpr 2, intExpr 3]-arrayExpr :: [Expression] -> Expression-arrayExpr = ExpressionArray . fmap ArrayElementExpression---- | Create an object expression from key-value pairs--- Example: objectExpr [("name", stringExpr "John"), ("age", intExpr 30)]-objectExpr :: [(String, Expression)] -> Expression-objectExpr pairs = ExpressionObject $ fmap toProperty pairs- where- toProperty (k, v) = Property (identExpr k) v PropertyKindInit False False---- | Create a function call expression--- Example: callExpr (identExpr "foo") [intExpr 1, intExpr 2]-callExpr :: Expression -> [Expression] -> Expression-callExpr callee args = ExpressionCall $ CallExpression callee args False---- | Create an optional chaining call expression--- Example: optionalCallExpr (identExpr "foo") [intExpr 1]-optionalCallExpr :: Expression -> [Expression] -> Expression-optionalCallExpr callee args = ExpressionCall $ CallExpression callee args True---- | Create a member access expression (obj.prop)--- Example: memberExpr (identExpr "obj") "prop"-memberExpr :: Expression -> String -> Expression-memberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False False---- | Create a computed member access expression (obj[expr])--- Example: computedMemberExpr (identExpr "arr") (intExpr 0)-computedMemberExpr :: Expression -> Expression -> Expression-computedMemberExpr obj prop = ExpressionMember $ MemberExpression obj prop True False---- | Create an optional chaining member expression (obj?.prop)--- Example: optionalMemberExpr (identExpr "obj") "prop"-optionalMemberExpr :: Expression -> String -> Expression-optionalMemberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False True---- | Create a conditional (ternary) expression--- Example: condExpr (identExpr "x") (intExpr 1) (intExpr 0)-condExpr :: Expression -> Expression -> Expression -> Expression-condExpr test consequent alternate = ExpressionConditional $- ConditionalExpression test consequent alternate---- | Create a binary expression--- Example: binaryExpr BinaryOperatorAdd (intExpr 1) (intExpr 2)-binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression-binaryExpr op left right = ExpressionBinary $ BinaryExpression op left right---- | Create an addition expression--- Example: addExpr (intExpr 1) (intExpr 2)-addExpr :: Expression -> Expression -> Expression-addExpr = binaryExpr BinaryOperatorAdd---- | Create a subtraction expression--- Example: subExpr (intExpr 5) (intExpr 3)-subExpr :: Expression -> Expression -> Expression-subExpr = binaryExpr BinaryOperatorSubtract---- | Create a multiplication expression--- Example: mulExpr (intExpr 3) (intExpr 4)-mulExpr :: Expression -> Expression -> Expression-mulExpr = binaryExpr BinaryOperatorMultiply---- | Create a division expression--- Example: divExpr (intExpr 10) (intExpr 2)-divExpr :: Expression -> Expression -> Expression-divExpr = binaryExpr BinaryOperatorDivide---- | Create a strict equality expression (===)--- Example: eqExpr (identExpr "x") (intExpr 1)-eqExpr :: Expression -> Expression -> Expression-eqExpr = binaryExpr BinaryOperatorStrictEqual---- | Create a strict inequality expression (!==)--- Example: neqExpr (identExpr "x") (intExpr 1)-neqExpr :: Expression -> Expression -> Expression-neqExpr = binaryExpr BinaryOperatorStrictNotEqual---- | Create a logical AND expression--- Example: andExpr (identExpr "a") (identExpr "b")-andExpr :: Expression -> Expression -> Expression-andExpr = binaryExpr BinaryOperatorAnd---- | Create a logical OR expression--- Example: orExpr (identExpr "a") (identExpr "b")-orExpr :: Expression -> Expression -> Expression-orExpr = binaryExpr BinaryOperatorOr---- | Create a unary expression--- Example: unaryExpr UnaryOperatorNot (identExpr "x")-unaryExpr :: UnaryOperator -> Expression -> Expression-unaryExpr op arg = ExpressionUnary $ UnaryExpression op arg True---- | Create a logical NOT expression--- Example: notExpr (identExpr "x")-notExpr :: Expression -> Expression-notExpr = unaryExpr UnaryOperatorNot---- | Create a negation expression--- Example: negateExpr (identExpr "x")-negateExpr :: Expression -> Expression-negateExpr = unaryExpr UnaryOperatorNegate---- | Create an assignment expression--- Example: assignExpr (identPattern "x") (intExpr 42)-assignExpr :: Pattern -> Expression -> Expression-assignExpr left right = ExpressionAssignment $- AssignmentExpression AssignmentOperatorAssign left right---- | The 'this' expression-thisExpr :: Expression-thisExpr = ExpressionThis---- | Create a 'new' expression--- Example: newExpr (identExpr "Date") []-newExpr :: Expression -> [Expression] -> Expression-newExpr callee args = ExpressionNew $ CallExpression callee args False---- | Create an await expression--- Example: awaitExpr (callExpr (identExpr "fetch") [stringExpr "url"])-awaitExpr :: Expression -> Expression-awaitExpr = ExpressionAwait---- | Create a yield expression--- Example: yieldExpr (Just (intExpr 1))-yieldExpr :: Maybe Expression -> Expression-yieldExpr = ExpressionYield---- | Create a spread expression--- Example: spreadExpr (identExpr "arr")-spreadExpr :: Expression -> Expression-spreadExpr = ExpressionSpread . SpreadElement---- | Create a parenthesized expression--- Example: parenExpr (addExpr (intExpr 1) (intExpr 2))-parenExpr :: Expression -> Expression-parenExpr = ExpressionParenthesized----- * Arrow Functions---- | Create an arrow function with an expression body--- Example: arrowExpr ["x", "y"] (addExpr (identExpr "x") (identExpr "y"))-arrowExpr :: [String] -> Expression -> Expression-arrowExpr params body = ExpressionArrow $ ArrowFunctionExpression- (fmap identPattern params)- (ArrowFunctionBodyExpression body)- False---- | Create an async arrow function with an expression body--- Example: asyncArrowExpr ["x"] (awaitExpr (callExpr (identExpr "fetch") [identExpr "x"]))-asyncArrowExpr :: [String] -> Expression -> Expression-asyncArrowExpr params body = ExpressionArrow $ ArrowFunctionExpression- (fmap identPattern params)- (ArrowFunctionBodyExpression body)- True---- | Create an arrow function with a block body--- Example: arrowBlockExpr ["x"] [returnStmt (Just (identExpr "x"))]-arrowBlockExpr :: [String] -> [Statement] -> Expression-arrowBlockExpr params body = ExpressionArrow $ ArrowFunctionExpression- (fmap identPattern params)- (ArrowFunctionBodyBlock body)- False----- * Patterns---- | Create an identifier pattern--- Example: identPattern "x"-identPattern :: String -> Pattern-identPattern = PatternIdentifier . ident---- | Create an object destructuring pattern--- Example: objectPattern [identPattern "a", identPattern "b"]-objectPattern :: [Pattern] -> Pattern-objectPattern ps = PatternObject $ ObjectPattern $ fmap toProperty ps- where- toProperty p = case p of- PatternIdentifier i -> ObjectPatternPropertyProperty $- Property (ExpressionIdentifier i) (ExpressionIdentifier i) PropertyKindInit False True- _ -> ObjectPatternPropertyProperty $- Property nullExpr (patternToExpr p) PropertyKindInit False False- patternToExpr (PatternIdentifier i) = ExpressionIdentifier i- patternToExpr _ = nullExpr---- | Create an array destructuring pattern--- Example: arrayPattern [Just (identPattern "a"), Nothing, Just (identPattern "b")]-arrayPattern :: [Maybe Pattern] -> Pattern-arrayPattern = PatternArray---- | Create a rest pattern--- Example: restPattern "args"-restPattern :: String -> Pattern-restPattern = PatternRest . RestElement . identPattern---- | Create a pattern with a default value--- Example: defaultPattern "x" (intExpr 0)-defaultPattern :: String -> Expression -> Pattern-defaultPattern name def = PatternAssignment $- AssignmentPattern (identPattern name) def----- * Statements---- | Create an expression statement--- Example: exprStmt (callExpr (identExpr "console.log") [stringExpr "hello"])-exprStmt :: Expression -> Statement-exprStmt = StatementExpression---- | Create a block statement--- Example: blockStmt [exprStmt (intExpr 1), exprStmt (intExpr 2)]-blockStmt :: [Statement] -> Statement-blockStmt = StatementBlock---- | Create a return statement--- Example: returnStmt (Just (intExpr 42))-returnStmt :: Maybe Expression -> Statement-returnStmt = StatementReturn---- | Create a throw statement--- Example: throwStmt (newExpr (identExpr "Error") [stringExpr "oops"])-throwStmt :: Expression -> Statement-throwStmt = StatementThrow . ThrowStatement---- | Create a break statement--- Example: breakStmt Nothing-breakStmt :: Maybe String -> Statement-breakStmt = StatementBreak . fmap ident---- | Create a continue statement--- Example: continueStmt Nothing-continueStmt :: Maybe String -> Statement-continueStmt = StatementContinue . fmap ident---- | Create an if statement--- Example: ifStmt (identExpr "x") (returnStmt (Just (intExpr 1))) Nothing-ifStmt :: Expression -> Statement -> Maybe Statement -> Statement-ifStmt test consequent alternate = StatementIf $ IfStatement test consequent alternate---- | Create a while statement--- Example: whileStmt (boolExpr True) (blockStmt [breakStmt Nothing])-whileStmt :: Expression -> Statement -> Statement-whileStmt test body = StatementWhile $ WhileStatement test body---- | Create a for statement--- Example: forStmt (Just (ForInitVariable (constDecl "i" (intExpr 0)))) (Just (binaryExpr BinaryOperatorLessThan (identExpr "i") (intExpr 10))) (Just (unaryExpr UnaryOperatorIncrement (identExpr "i"))) (blockStmt [])-forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement-forStmt init test update body = StatementFor $ ForStatement init test update body---- | Create a for-of statement--- Example: forOfStmt False (ForInLeftVariable (constDecl "item" Nothing)) (identExpr "items") (blockStmt [])-forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement-forOfStmt await left right body = StatementForOf $ ForOfStatement await left right body---- | Create a try statement--- Example: tryStmt [exprStmt (callExpr (identExpr "riskyOp") [])] (Just (catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")])) Nothing-tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement-tryStmt block handler finalizer = StatementTry $ TryStatement block handler finalizer---- | Create a catch clause--- Example: catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")]-catchClause :: Maybe Pattern -> [Statement] -> CatchClause-catchClause = CatchClause---- | Create a switch statement--- Example: switchStmt (identExpr "x") [switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))], switchCase Nothing [returnStmt (Just (stringExpr "default"))]]-switchStmt :: Expression -> [SwitchCase] -> Statement-switchStmt discriminant cases = StatementSwitch $ SwitchStatement discriminant cases---- | Create a switch case--- Example: switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))]-switchCase :: Maybe Expression -> [Statement] -> SwitchCase-switchCase = SwitchCase---- | An empty statement-emptyStmt :: Statement-emptyStmt = StatementEmpty---- | A debugger statement-debuggerStmt :: Statement-debuggerStmt = StatementDebugger----- * Variable Declarations---- | Create a const declaration--- Example: constDecl "x" (Just (intExpr 42))-constDecl :: String -> Maybe Expression -> VariableDeclaration-constDecl name init = VariableDeclaration VariableKindConst- [VariableDeclarator (identPattern name) init]---- | Create a let declaration--- Example: letDecl "x" (Just (intExpr 42))-letDecl :: String -> Maybe Expression -> VariableDeclaration-letDecl name init = VariableDeclaration VariableKindLet- [VariableDeclarator (identPattern name) init]---- | Create a var declaration--- Example: varDecl "x" (Just (intExpr 42))-varDecl :: String -> Maybe Expression -> VariableDeclaration-varDecl name init = VariableDeclaration VariableKindVar- [VariableDeclarator (identPattern name) init]---- | Create a variable declaration statement--- Example: varDeclStmt (constDecl "x" (Just (intExpr 42)))-varDeclStmt :: VariableDeclaration -> Statement-varDeclStmt = StatementVariableDeclaration----- * Function Declarations---- | Create a function declaration--- Example: funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))]-funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration-funcDecl name params body = FunctionDeclaration- (ident name)- (fmap identPattern params)- body- False- False---- | Create an async function declaration--- Example: asyncFuncDecl "fetchData" ["url"] [returnStmt (Just (awaitExpr (callExpr (identExpr "fetch") [identExpr "url"])))]-asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration-asyncFuncDecl name params body = FunctionDeclaration- (ident name)- (fmap identPattern params)- body- True- False---- | Create a function declaration statement--- Example: funcDeclStmt (funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))])-funcDeclStmt :: FunctionDeclaration -> Statement-funcDeclStmt = StatementFunctionDeclaration----- * Class Declarations---- | Create a class declaration--- Example: classDecl "Person" Nothing [methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]]-classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration-classDecl name superClass body = ClassDeclaration (ident name) superClass body---- | Create a method definition--- Example: methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]-methodDef :: String -> [String] -> [Statement] -> MethodDefinition-methodDef name params body = MethodDefinition- (identExpr name)- (FunctionExpression Nothing (fmap identPattern params) body False False)- MethodKindMethod- False- False---- | Create a constructor definition--- Example: constructorDef ["name"] [exprStmt (assignExpr (PatternIdentifier (ident "this.name")) (identExpr "name"))]-constructorDef :: [String] -> [Statement] -> MethodDefinition-constructorDef params body = MethodDefinition- (identExpr "constructor")- (FunctionExpression Nothing (fmap identPattern params) body False False)- MethodKindConstructor- False- False---- | Create a static method definition--- Example: staticMethodDef "create" [] [returnStmt (Just (newExpr (identExpr "Person") []))]-staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition-staticMethodDef name params body = MethodDefinition- (identExpr name)- (FunctionExpression Nothing (fmap identPattern params) body False False)- MethodKindMethod- False- True---- | Create a class declaration statement--- Example: classDeclStmt (classDecl "Person" Nothing [])-classDeclStmt :: ClassDeclaration -> Statement-classDeclStmt = StatementClassDeclaration----- * Module Items---- | Create a statement module item--- Example: stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))-stmtItem :: Statement -> ModuleItem-stmtItem = ModuleItemStatement---- | Create an import declaration--- Example: importDecl [importNamed "foo" "foo"] "./module.js"-importDecl :: [ImportClause] -> String -> ImportDeclaration-importDecl specifiers source = ImportDeclaration specifiers (StringLiteral source False)---- | Create a named import--- Example: importNamed "foo" "bar" -- import { foo as bar }-importNamed :: String -> String -> ImportClause-importNamed imported local = ImportClauseNamed $- ImportSpecifier (ident imported) (ident local)---- | Create a default import--- Example: importDefault "foo" -- import foo from ...-importDefault :: String -> ImportClause-importDefault = ImportClauseDefault . ImportDefaultSpecifier . ident---- | Create a namespace import--- Example: importNamespace "foo" -- import * as foo from ...-importNamespace :: String -> ImportClause-importNamespace = ImportClauseNamespace . ImportNamespaceSpecifier . ident---- | Create an import module item--- Example: importItem (importDecl [importDefault "React"] "react")-importItem :: ImportDeclaration -> ModuleItem-importItem = ModuleItemImport---- | Create a named export declaration--- Example: namedExportDecl [("foo", "foo")] Nothing-namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration-namedExportDecl specifiers source = ExportDeclarationNamed $ NamedExport- (fmap (\(local, exported) -> ExportSpecifier (ident local) (ident exported)) specifiers)- (fmap (\s -> StringLiteral s False) source)---- | Create a default export declaration--- Example: defaultExportDecl (identExpr "foo")-defaultExportDecl :: Expression -> ExportDeclaration-defaultExportDecl = ExportDeclarationDefault---- | Create an export declaration for a statement--- Example: exportDeclStmt (varDeclStmt (constDecl "x" (Just (intExpr 42))))-exportDeclStmt :: Statement -> ExportDeclaration-exportDeclStmt = ExportDeclarationDeclaration---- | Create an export module item--- Example: exportItem (defaultExportDecl (identExpr "foo"))-exportItem :: ExportDeclaration -> ModuleItem-exportItem = ModuleItemExport----- * Programs---- | Create a module program--- Example: moduleProgram [importItem (importDecl [importDefault "foo"] "./foo.js"), stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]-moduleProgram :: [ModuleItem] -> Program-moduleProgram body = Program body SourceTypeModule---- | Create a script program--- Example: scriptProgram [stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]-scriptProgram :: [ModuleItem] -> Program-scriptProgram body = Program body SourceTypeScript----- * Type Expressions---- | Create an identifier type expression--- Example: identType "string"-identType :: String -> TypeExpression-identType = TypeExpressionIdentifier . ident---- | Create an array type expression--- Example: arrayType (identType "number")-arrayType :: TypeExpression -> TypeExpression-arrayType = TypeExpressionArray . ArrayTypeExpression---- | Create a union type expression--- Example: unionType [identType "string", identType "number"]-unionType :: [TypeExpression] -> TypeExpression-unionType = TypeExpressionUnion---- | Create an optional type expression--- Example: optionalType (identType "string")-optionalType :: TypeExpression -> TypeExpression-optionalType = TypeExpressionOptional---- | Create a parameterized type expression--- Example: paramType (identType "Array") [identType "string"]-paramType :: TypeExpression -> [TypeExpression] -> TypeExpression-paramType base args = TypeExpressionParameterized $- ParameterizedTypeExpression base args---- | The 'any' type-anyType :: TypeExpression-anyType = TypeExpressionAny---- | The 'void' type-voidType :: TypeExpression-voidType = TypeExpressionVoid---- | The 'never' type-neverType :: TypeExpression-neverType = TypeExpressionNever----- * Comments and Documentation---- | Create a line comment--- Example: lineComment "This is a comment"-lineComment :: String -> Comment-lineComment = CommentLine---- | Create a block comment--- Example: blockComment "This is a\nmultiline comment"-blockComment :: String -> Comment-blockComment = CommentBlock---- | Create a documentation comment--- Example: docComment "Description of the function" [paramTag "x" (Just (identType "number")) "The input value"]-docComment :: String -> [DocumentationTag] -> Comment-docComment desc tags = CommentDocumentation $ DocumentationComment desc tags---- | Create a @param documentation tag--- Example: paramTag "x" (Just (identType "number")) "The input value"-paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag-paramTag name typ desc = DocumentationTag "param" typ (Just $ ident name) desc---- | Create a @returns documentation tag--- Example: returnsTag (Just (identType "number")) "The result"-returnsTag :: Maybe TypeExpression -> String -> DocumentationTag-returnsTag typ desc = DocumentationTag "returns" typ Nothing desc---- | Create a @type documentation tag--- Example: typeTag (identType "number")-typeTag :: TypeExpression -> DocumentationTag-typeTag typ = DocumentationTag "type" (Just typ) Nothing ""
− src/main/haskell/Hydra/TypeScript/Coder.hs
@@ -1,1227 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | TypeScript code generator: emits TypeScript type declarations from Hydra modules--module Hydra.TypeScript.Coder where--import qualified Hydra.Analysis as Analysis-import qualified Hydra.Annotations as Annotations-import qualified Hydra.Arity as Arity-import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Environment as Environment-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Print.Docs as PrintDocs-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Rewriting as Rewriting-import qualified Hydra.Scoping as Scoping-import qualified Hydra.Serialization as Serialization-import qualified Hydra.Sorting as Sorting-import qualified Hydra.Strip as Strip-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.TypeScript.Language as Language-import qualified Hydra.TypeScript.Serde as Serde-import qualified Hydra.TypeScript.Syntax as Syntax-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variables as Variables-import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Map as M-import qualified Data.Set as S---- | Analyze a term as a TypeScript function, using the Graph as the analysis environment-analyzeTypeScriptFunction :: Typing.InferenceContext -> Graph.Graph -> Core.Term -> Either t0 (Typing.FunctionStructure Graph.Graph)-analyzeTypeScriptFunction cx g term = Analysis.analyzeFunctionTerm cx tsEnvGetGraph tsEnvSetGraph g term---- | Collect the bound parameter names from a chain of nested foralls, in outer-to-inner order; stops at the first non-forall type-collectForallParams :: Core.Type -> [Core.Name]-collectForallParams t =-- let dt = Strip.deannotateType t- in case dt of- Core.TypeForall v0 -> Lists.cons (Core.forallTypeParameter v0) (collectForallParams (Core.forallTypeBody v0))- _ -> []---- | Collect the names of every type referenced in a type tree that belongs to a different namespace than the current module, for computing the imports needed at the top of the emitted .ts file-collectImports :: Packaging.ModuleName -> Core.Type -> S.Set Core.Name-collectImports currentNs t =-- let vars = Variables.freeVariablesInType t- in (filterNonLocalNames currentNs vars)---- | Collect type imports referenced inside a term tree (lambda bodies, type applications, let-binding schemes), supplementing the top-level typeScheme walk-collectInnerTypeImports :: Packaging.ModuleName -> Core.Term -> S.Set Core.Name-collectInnerTypeImports currentNs term =-- let subs = Rewriting.subterms term- ownVars =- case (Strip.deannotateTerm term) of- Core.TermLambda v0 -> Optionals.match (Core.lambdaDomain v0) Sets.empty (\d -> Variables.freeVariablesInType d)- Core.TermTypeApplication v0 -> Variables.freeVariablesInType (Core.typeApplicationTermType v0)- Core.TermTypeLambda _ -> Sets.empty- Core.TermLet v0 -> Lists.foldl (\acc -> \b -> Optionals.match (Core.bindingTypeScheme b) acc (\ts -> Sets.union acc (Variables.freeVariablesInType (Core.typeSchemeBody ts)))) Sets.empty (Core.letBindings v0)- _ -> Sets.empty- childVars = Lists.foldl (\acc -> \s -> Sets.union acc (collectInnerTypeImports currentNs s)) Sets.empty subs- in (filterNonLocalNames currentNs (Sets.union ownVars childVars))---- | Like collectImports but walks a Term, gathering free term-level variables that resolve to a different module-collectTermImports :: Packaging.ModuleName -> Core.Term -> S.Set Core.Name-collectTermImports currentNs t =-- let vars = Variables.freeVariablesInTerm t- in (filterNonLocalNames currentNs vars)---- | Decode a canonical decimal digit string into a ((sign, digits), scale) nested pair-decimalDigitsAndScale :: String -> ((String, String), Int)-decimalDigitsAndScale s =-- let eParts = Strings.splitOn "e" s- mantissa = Optionals.withDefault "" (Lists.head eParts)- expText = Optionals.withDefault "" (Lists.head (Lists.drop 1 eParts))- expTextUnplussed =- Logic.ifElse (Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 expText)) 43) (Strings.fromList (Lists.drop 1 (Strings.toList expText))) expText- expPart = Optionals.withDefault 0 (Literals.parseInt32 expTextUnplussed)- isNeg = Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 mantissa)) 45- unsigned = Logic.ifElse isNeg (Strings.fromList (Lists.drop 1 (Strings.toList mantissa))) mantissa- dotParts = Strings.splitOn "." unsigned- intPart = Optionals.withDefault "" (Lists.head dotParts)- fracPart = Optionals.withDefault "" (Lists.head (Lists.drop 1 dotParts))- rawDigits = Strings.concat2 intPart fracPart- rawScale = Math.sub (Strings.length fracPart) expPart- sign = Logic.ifElse isNeg "-" ""- in (Logic.ifElse (Ordering.lt rawScale 0) ((sign, (Strings.concat2 rawDigits (Strings.fromList (Lists.replicate (Math.negate rawScale) 48)))), 0) ((sign, rawDigits), rawScale))---- | Find the free variables of a term that are referenced eagerly, i.e. outside of any nested lambda body; used to break false dependency cycles caused by DSL-level thunks such as hydra.parsers.lazy-eagerFreeVariablesInTerm :: Core.Term -> S.Set Core.Name-eagerFreeVariablesInTerm term =-- let dfltVars =- \_ -> Lists.foldl (\s -> \t -> Sets.union s (eagerFreeVariablesInTerm t)) Sets.empty (Rewriting.subterms term)- in case term of- Core.TermLambda _ -> Sets.empty- Core.TermLet v0 -> Sets.difference (dfltVars ()) (Sets.fromList (Lists.map (\b -> Core.bindingName b) (Core.letBindings v0)))- Core.TermVariable v0 -> Sets.singleton v0- _ -> dfltVars ()---- | Encode a let-binding as a TS statement inside an enclosing function body, hoisting lambda-valued bindings as nested function declarations-encodeBindingAsStatement :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Core.Binding -> Syntax.Statement-encodeBindingAsStatement cx g currentNs b =-- let bname = Core.bindingName b- lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf bname)- bterm = Core.bindingTerm b- dterm = Strip.deannotateTerm bterm- in case dterm of- Core.TermLambda _ ->- let innerFunDecl =- functionDeclarationFromTerm cx g currentNs lname bterm (Optionals.bind (Core.bindingTypeScheme b) (\ts -> Just (Core.typeSchemeBody ts)))- in (Syntax.StatementFunctionDeclaration innerFunDecl)- _ ->- let expr = encodeTerm cx g currentNs bterm- declarator =- Syntax.VariableDeclarator {- Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),- Syntax.variableDeclaratorInit = (Just expr)}- varDecl =- Syntax.VariableDeclaration {- Syntax.variableDeclarationKind = Syntax.VariableKindConst,- Syntax.variableDeclarationDeclarations = [- declarator]}- in (Syntax.StatementVariableDeclaration varDecl)---- | Emit a fully-applied primitive call with selected arguments wrapped in thunks, per a parallel list of laziness flags-encodeLazyCall :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Core.Term -> [Core.Term] -> [Bool] -> Syntax.Expression-encodeLazyCall cx g currentNs headTerm args lazyFlags =-- let headExpr = encodeTerm cx g currentNs headTerm- paired = Lists.zip args lazyFlags- renderArg =- \p ->- let argTerm = Pairs.first p- isLazy = Pairs.second p- expr = encodeTerm cx g currentNs argTerm- in (Logic.ifElse isLazy (tsArrow [] expr) expr)- argExprs = Lists.map renderArg paired- in (tsCall headExpr argExprs)---- | Render a Hydra literal as a TypeScript expression-encodeLiteral :: Core.Literal -> Syntax.Expression-encodeLiteral lit =-- let litExpr = \lit -> Syntax.ExpressionLiteral lit- numLit = \i -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralInteger i))- floatLit = \f -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralFloat f))- strLit =- \s -> litExpr (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = s,- Syntax.stringLiteralSingleQuote = False}))- boolLit = \b -> litExpr (Syntax.LiteralBoolean b)- bigIntCall = \txt -> tsCall (tsExprIdent "BigInt") [- strLit txt]- in case lit of- Core.LiteralBinary v0 -> strLit (Literals.binaryToBase64 v0)- Core.LiteralBoolean v0 -> boolLit v0- Core.LiteralDecimal v0 ->- let parts = decimalDigitsAndScale (Literals.printDecimal v0)- signDigits = Pairs.first parts- scale = Pairs.second parts- coefficientText = Strings.concat2 (Pairs.first signDigits) (Pairs.second signDigits)- in (tsObject [- ("coefficient", (bigIntCall coefficientText)),- ("scale", (numLit (Literals.bigintToInt64 (Literals.int32ToBigint scale))))])- Core.LiteralString v0 -> strLit v0- Core.LiteralInteger v0 -> case v0 of- Core.IntegerValueBigint v1 -> bigIntCall (Literals.printBigint v1)- Core.IntegerValueInt8 v1 -> numLit (Literals.bigintToInt64 (Literals.int8ToBigint v1))- Core.IntegerValueInt16 v1 -> numLit (Literals.bigintToInt64 (Literals.int16ToBigint v1))- Core.IntegerValueInt32 v1 -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint v1))- Core.IntegerValueInt64 v1 -> bigIntCall (Literals.printInt64 v1)- Core.IntegerValueUint8 v1 -> numLit (Literals.bigintToInt64 (Literals.uint8ToBigint v1))- Core.IntegerValueUint16 v1 -> numLit (Literals.bigintToInt64 (Literals.uint16ToBigint v1))- Core.IntegerValueUint32 v1 -> numLit (Literals.bigintToInt64 (Literals.uint32ToBigint v1))- Core.IntegerValueUint64 v1 -> bigIntCall (Literals.printUint64 v1)- _ -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint 0))- Core.LiteralFloat v0 -> case v0 of- Core.FloatValueFloat32 v1 -> floatLit (Literals.float32ToFloat64 v1)- Core.FloatValueFloat64 v1 -> floatLit v1- _ -> floatLit 0.0- _ -> litExpr Syntax.LiteralNull---- | Map a Hydra literal type to a TypeScript type expression-encodeLiteralType :: Core.LiteralType -> Syntax.TypeExpression-encodeLiteralType lt =- case lt of- Core.LiteralTypeBinary -> tsParamApp1 "ReadonlyArray" (tsNamedType "number")- Core.LiteralTypeBoolean -> tsNamedType "boolean"- Core.LiteralTypeDecimal -> Syntax.TypeExpressionObject [- tsPropSig "coefficient" False (tsNamedType "bigint"),- (tsPropSig "scale" False (tsNamedType "number"))]- Core.LiteralTypeFloat v0 -> case v0 of- Core.FloatTypeFloat32 -> tsNamedType "number"- Core.FloatTypeFloat64 -> tsNamedType "number"- Core.LiteralTypeInteger v0 -> case v0 of- Core.IntegerTypeBigint -> tsNamedType "bigint"- Core.IntegerTypeInt8 -> tsNamedType "number"- Core.IntegerTypeInt16 -> tsNamedType "number"- Core.IntegerTypeInt32 -> tsNamedType "number"- Core.IntegerTypeInt64 -> tsNamedType "bigint"- Core.IntegerTypeUint8 -> tsNamedType "number"- Core.IntegerTypeUint16 -> tsNamedType "number"- Core.IntegerTypeUint32 -> tsNamedType "number"- Core.IntegerTypeUint64 -> tsNamedType "bigint"- Core.LiteralTypeString -> tsNamedType "string"---- | Build a TS function parameter as a pattern, typed unless the domain is the analyze pass's untyped-variable sentinel-encodeParam :: t0 -> t1 -> Packaging.ModuleName -> Core.Name -> Core.Type -> Syntax.Pattern-encodeParam cx g currentNs pname dom =-- let nstr = sanitizeParamName pname- in case (Strip.deannotateType dom) of- Core.TypeVariable _ -> tsTypedIdent nstr Syntax.TypeExpressionAny- _ -> tsTypedIdent nstr (encodeTypeOrAny cx g currentNs dom)---- | Render a Hydra term as a TypeScript expression-encodeTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Core.Term -> Syntax.Expression-encodeTerm cx g currentNs term =- case term of- Core.TermAnnotated v0 -> encodeTerm cx g currentNs (Core.annotatedTermBody v0)- Core.TermLiteral v0 -> encodeLiteral v0- Core.TermVariable v0 ->- let local = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf v0)- varExpr =- Optionals.match (Names.moduleNameOf v0) (tsExprIdent local) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (tsExprIdent local) (- let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))- alias = Strings.concat2 "$mod_" (Strings.join "_" nsSegs)- in (tsMember (tsExprIdent alias) local)))- in (Optionals.match (Lexical.lookupPrimitive g v0) varExpr (\prim ->- let isZeroArityEffect =- Logic.and (Equality.equal (Arity.primitiveArity prim) 0) (Logic.not (Packaging.primitiveDefinitionIsPure (Graph.primitiveDefinition prim)))- in (Logic.ifElse isZeroArityEffect (tsCall varExpr []) varExpr)))- Core.TermLambda v0 ->- let lamTerm = Core.TermLambda v0- fsLE = analyzeTypeScriptFunction cx g lamTerm- fsL =- Eithers.either (\_err -> Typing.FunctionStructure {- Typing.functionStructureTypeParams = [],- Typing.functionStructureParams = [],- Typing.functionStructureBindings = [],- Typing.functionStructureBody = lamTerm,- Typing.functionStructureDomains = [],- Typing.functionStructureCodomain = Nothing,- Typing.functionStructureEnvironment = g}) (\ok -> ok) fsLE- fsLParams = Typing.functionStructureParams fsL- fsLDoms = Typing.functionStructureDomains fsL- fsLBindings = Typing.functionStructureBindings fsL- fsLBody = Typing.functionStructureBody fsL- fsLEnv = Typing.functionStructureEnvironment fsL- innerBody =- Logic.ifElse (Lists.isEmpty fsLBindings) fsLBody (Core.TermLet (Core.Let {- Core.letBindings = fsLBindings,- Core.letBody = fsLBody}))- paramAcc =- Lists.foldl (\acc -> \pn ->- let idx = Pairs.first acc- pats = Pairs.second acc- raw = Names.localNameOf pn- uniq = Logic.ifElse (Equality.equal raw "_") (Strings.concat2 "_" (Literals.printInt32 idx)) raw- pat = tsTypedIdent (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords uniq) Syntax.TypeExpressionAny- in (Math.add idx 1, (Lists.concat2 pats [- pat]))) (0, []) fsLParams- paramPatterns = Pairs.second paramAcc- bExpr = encodeTerm cx fsLEnv currentNs innerBody- in (tsArrowTyped paramPatterns bExpr)- Core.TermApplication v0 ->- let asTerm = Core.TermApplication v0- flat = flattenApplication asTerm- headTerm = Pairs.first flat- args = Pairs.second flat- mName = termHeadVariable headTerm- argc = Lists.length args- lazyMaybe =- Optionals.match mName Nothing (\n ->- let lazyFlags = lazyFlagsForPrimitive g n- anyLazy = Lists.foldl (\b -> \f -> Logic.or b f) False lazyFlags- in (Logic.ifElse (Logic.and anyLazy (Equality.equal argc (Lists.length lazyFlags))) (Just (encodeLazyCall cx g currentNs headTerm args lazyFlags)) Nothing))- in (Optionals.match lazyMaybe (- let dHead = Strip.deannotateAndDetypeTerm headTerm- encArgs = Lists.map (encodeTerm cx g currentNs) args- in case dHead of- Core.TermProject v1 -> Logic.ifElse (Lists.isEmpty encArgs) (- let headExpr = encodeTerm cx g currentNs headTerm- in headExpr) (- let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Core.unName (Core.projectionFieldName v1))- firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)- restA = Lists.drop 1 encArgs- fieldExpr = tsMember firstA fname- in (Logic.ifElse (Lists.isEmpty restA) fieldExpr (tsCall fieldExpr restA)))- Core.TermUnwrap _ -> Logic.ifElse (Lists.isEmpty encArgs) (- let headExpr = encodeTerm cx g currentNs headTerm- in headExpr) (- let firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)- restA = Lists.drop 1 encArgs- valueExpr = tsMember firstA "value"- in (Logic.ifElse (Lists.isEmpty restA) valueExpr (tsCall valueExpr restA)))- _ ->- let headExpr = encodeTerm cx g currentNs headTerm- in (tsCall headExpr encArgs)) (\e -> e))- Core.TermUnit -> tsUndefined- Core.TermList v0 -> tsArray (Lists.map (encodeTerm cx g currentNs) v0)- Core.TermSet v0 -> tsNew (tsExprIdent "Set") [- tsArray (Lists.map (encodeTerm cx g currentNs) (Sets.toList v0))]- Core.TermMap v0 -> tsNew (tsExprIdent "Map") [- tsArray (Lists.map (\entry -> tsArray [- encodeTerm cx g currentNs (Pairs.first entry),- (encodeTerm cx g currentNs (Pairs.second entry))]) (Maps.toList v0))]- Core.TermPair v0 -> tsAsAny (tsArray [- encodeTerm cx g currentNs (Pairs.first v0),- (encodeTerm cx g currentNs (Pairs.second v0))])- Core.TermOptional v0 -> Optionals.match v0 (tsAsAny (tsObject [- ("tag", (tsExprStr "none"))])) (\v -> tsAsAny (tsObject [- ("tag", (tsExprStr "given")),- ("value", (encodeTerm cx g currentNs v))]))- Core.TermRecord v0 ->- let fields = Core.recordFields v0- in (tsObject (Lists.map (\f -> (- Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Core.unName (Core.fieldName f)),- (encodeTerm cx g currentNs (Core.fieldTerm f)))) fields))- Core.TermInject v0 ->- let fname = Core.unName (Core.fieldName (Core.injectionField v0))- fterm = Core.fieldTerm (Core.injectionField v0)- isUnit =- case (Strip.deannotateTerm fterm) of- Core.TermUnit -> True- _ -> False- in (Logic.ifElse isUnit (tsAsAny (tsObject [- ("tag", (tsExprStr fname))])) (tsAsAny (tsObject [- ("tag", (tsExprStr fname)),- ("value", (encodeTerm cx g currentNs fterm))])))- Core.TermWrap v0 -> tsObject [- ("value", (encodeTerm cx g currentNs (Core.wrappedTermBody v0)))]- Core.TermLet v0 ->- let lt2 = thunkLazyLet v0- bindings = sortBindingsTopologically (Core.letBindings lt2)- body = Core.letBody lt2- encodedBody = encodeTerm cx g currentNs body- bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx g currentNs b) bindings- returnStmt = Syntax.StatementReturn (Just encodedBody)- stmts = Lists.concat2 bindingStmts [- returnStmt]- iifeArrow =- Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {- Syntax.arrowFunctionExpressionParams = [],- Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock stmts),- Syntax.arrowFunctionExpressionAsync = False})- in (tsCall iifeArrow [])- Core.TermTypeApplication v0 -> encodeTerm cx g currentNs (Core.typeApplicationTermBody v0)- Core.TermTypeLambda v0 -> encodeTerm cx g currentNs (Core.typeLambdaBody v0)- Core.TermProject v0 ->- let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Core.unName (Core.projectionFieldName v0))- in (tsArrowTyped [- tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") fname))- Core.TermUnwrap _ -> tsArrowTyped [- tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") "value")- Core.TermCases v0 ->- let armFields = Core.caseStatementCases v0- defaultMaybe = Core.caseStatementDefault v0- uVar = "u"- uExpr = tsAsAny (tsExprIdent uVar)- uTag = tsMember uExpr "tag"- uValue = tsMember uExpr "value"- armCases =- Lists.map (\f ->- let fname = Core.unName (Core.caseAlternativeName f)- armExpr = encodeTerm cx g currentNs (Core.caseAlternativeHandler f)- callExpr = tsCall armExpr [- uValue]- in Syntax.SwitchCase {- Syntax.switchCaseTest = (Just (tsExprStr fname)),- Syntax.switchCaseConsequent = [- Syntax.StatementReturn (Just callExpr)]}) armFields- defaultCase =- Optionals.match defaultMaybe (Syntax.SwitchCase {- Syntax.switchCaseTest = Nothing,- Syntax.switchCaseConsequent = [- Syntax.StatementReturn (Just (tsCall (tsExprIdent "(() => { throw new Error('unmatched case'); })") []))]}) (\dt ->- let dExpr = encodeTerm cx g currentNs dt- in Syntax.SwitchCase {- Syntax.switchCaseTest = Nothing,- Syntax.switchCaseConsequent = [- Syntax.StatementReturn (Just dExpr)]})- allCases = Lists.concat2 armCases [- defaultCase]- switchStmt =- Syntax.StatementSwitch (Syntax.SwitchStatement {- Syntax.switchStatementDiscriminant = uTag,- Syntax.switchStatementCases = allCases})- in (Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {- Syntax.arrowFunctionExpressionParams = [- Syntax.PatternIdentifier (tsIdent uVar)],- Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock [- switchStmt]),- Syntax.arrowFunctionExpressionAsync = False}))- Core.TermEither v0 -> Eithers.either (\l -> tsAsAny (tsObject [- ("tag", (tsExprStr "left")),- ("value", (encodeTerm cx g currentNs l))])) (\r -> tsAsAny (tsObject [- ("tag", (tsExprStr "right")),- ("value", (encodeTerm cx g currentNs r))])) v0- _ -> tsExprIdent "null"---- | Render a Hydra term definition as a TypeScript module item-encodeTermDefinition :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Packaging.TermDefinition -> (Maybe String, Syntax.ModuleItem)-encodeTermDefinition cx g currentNs td =-- let name = Packaging.termDefinitionName td- lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf name)- rawTerm = Packaging.termDefinitionBody td- mdoc = Eithers.either (\_ -> Nothing) (\x_ -> x_) (Annotations.getTermDescription cx g rawTerm)- asExport = \stmt -> Syntax.ModuleItemExport (Syntax.ExportDeclarationDeclaration stmt)- mScheme =- Optionals.bind (Packaging.termDefinitionSignature td) (\sig -> Just (Core.typeSchemeBody (Scoping.termSignatureToTypeScheme sig)))- dterm = Strip.deannotateTerm rawTerm- funDecl = functionDeclarationFromTerm cx g currentNs lname rawTerm mScheme- asFunDecl = asExport (Syntax.StatementFunctionDeclaration funDecl)- item =- case dterm of- Core.TermLambda _ -> asFunDecl- Core.TermTypeLambda _ -> asFunDecl- _ ->- let expr = encodeTerm cx g currentNs rawTerm- declarator =- Syntax.VariableDeclarator {- Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),- Syntax.variableDeclaratorInit = (Just expr)}- varDecl =- Syntax.VariableDeclaration {- Syntax.variableDeclarationKind = Syntax.VariableKindConst,- Syntax.variableDeclarationDeclarations = [- declarator]}- in (asExport (Syntax.StatementVariableDeclaration varDecl))- in (mdoc, item)---- | Map a Hydra type to a TypeScript type expression-encodeType :: t0 -> t1 -> Packaging.ModuleName -> Core.Type -> Either t2 Syntax.TypeExpression-encodeType cx g currentNs t =-- let typ = Strip.deannotateType t- in case typ of- Core.TypeAnnotated v0 -> encodeType cx g currentNs (Core.annotatedTypeBody v0)- Core.TypeApplication v0 ->- let fnTyp = Core.applicationTypeFunction v0- argTyp = Core.applicationTypeArgument v0- in (Eithers.bind (encodeType cx g currentNs fnTyp) (\encFn -> Eithers.bind (encodeType cx g currentNs argTyp) (\encArg -> case encFn of- Syntax.TypeExpressionIdentifier _ -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {- Syntax.parameterizedTypeExpressionBase = encFn,- Syntax.parameterizedTypeExpressionArguments = [- encArg]}))- Syntax.TypeExpressionParameterized v1 -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {- Syntax.parameterizedTypeExpressionBase = (Syntax.parameterizedTypeExpressionBase v1),- Syntax.parameterizedTypeExpressionArguments = (Lists.concat2 (Syntax.parameterizedTypeExpressionArguments v1) [- encArg])}))- _ -> Right encFn)))- Core.TypeForall v0 -> encodeType cx g currentNs (Core.forallTypeBody v0)- Core.TypeUnit -> Right Syntax.TypeExpressionVoid- Core.TypeVoid -> Right Syntax.TypeExpressionNever- Core.TypeLiteral v0 -> Right (encodeLiteralType v0)- Core.TypeList v0 -> Eithers.map (\enc -> tsParamApp1 "ReadonlyArray" enc) (encodeType cx g currentNs v0)- Core.TypeSet v0 -> Eithers.map tsReadonlySet (encodeType cx g currentNs v0)- Core.TypeMap v0 -> Eithers.bind (encodeType cx g currentNs (Core.mapTypeKeys v0)) (\kt -> Eithers.bind (encodeType cx g currentNs (Core.mapTypeValues v0)) (\vt -> Right (tsReadonlyMap kt vt)))- Core.TypeOptional v0 -> Eithers.map (\enc -> Syntax.TypeExpressionUnion [- Syntax.TypeExpressionObject [- tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = "given",- Syntax.stringLiteralSingleQuote = False}))),- (tsPropSig "value" False enc)],- (Syntax.TypeExpressionObject [- tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = "none",- Syntax.stringLiteralSingleQuote = False})))])]) (encodeType cx g currentNs v0)- Core.TypeEither v0 -> Eithers.bind (encodeType cx g currentNs (Core.eitherTypeLeft v0)) (\lt -> Eithers.bind (encodeType cx g currentNs (Core.eitherTypeRight v0)) (\rt ->- let leftArm =- Syntax.TypeExpressionObject [- tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = "left",- Syntax.stringLiteralSingleQuote = False}))),- (tsPropSig "value" False lt)]- rightArm =- Syntax.TypeExpressionObject [- tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = "right",- Syntax.stringLiteralSingleQuote = False}))),- (tsPropSig "value" False rt)]- in (Right (Syntax.TypeExpressionUnion [- leftArm,- rightArm]))))- Core.TypePair v0 -> Eithers.bind (encodeType cx g currentNs (Core.pairTypeFirst v0)) (\ft -> Eithers.bind (encodeType cx g currentNs (Core.pairTypeSecond v0)) (\st -> Right (tsTuple [- ft,- st])))- Core.TypeFunction v0 -> Eithers.bind (encodeType cx g currentNs (Core.functionTypeDomain v0)) (\dom -> Eithers.bind (encodeType cx g currentNs (Core.functionTypeCodomain v0)) (\cod -> Right (Syntax.TypeExpressionFunction (Syntax.FunctionTypeExpression {- Syntax.functionTypeExpressionTypeParameters = [],- Syntax.functionTypeExpressionParameters = [- dom],- Syntax.functionTypeExpressionReturnType = cod}))))- Core.TypeVariable v0 ->- let lname = Formatting.capitalize (Names.localNameOf v0)- in (Optionals.match (Names.moduleNameOf v0) (Right (tsNamedType lname)) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (Right (tsNamedType lname)) (- let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))- typeAlias = Strings.concat2 "$type_" (Strings.join "_" nsSegs)- in (Right (tsNamedType (Strings.concat [- typeAlias,- ".",- lname]))))))- Core.TypeWrap v0 -> encodeType cx g currentNs v0- Core.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->- let fname = Core.unName (Core.fieldTypeName ft)- ftyp = Core.fieldTypeType ft- in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (tsPropSig fname False sftyp)))) v0) (\members -> Right (Syntax.TypeExpressionObject members))- Core.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->- let fname = Core.unName (Core.fieldTypeName ft)- ftyp = Core.fieldTypeType ft- in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [- tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = fname,- Syntax.stringLiteralSingleQuote = False}))),- (tsPropSig "value" False sftyp)])))) v0) (\arms -> Right (Syntax.TypeExpressionUnion arms))---- | Encode a Hydra type definition as an interface declaration, a discriminated-union type alias, or a plain type alias-encodeTypeDefinition :: t0 -> Graph.Graph -> Packaging.ModuleName -> Packaging.TypeDefinition -> Either Errors.Error (Maybe String, Syntax.ModuleItem)-encodeTypeDefinition cx g currentNs tdef =-- let name = Packaging.typeDefinitionName tdef- typScheme = Packaging.typeDefinitionBody tdef- rawTyp = Core.typeSchemeBody typScheme- lname = Formatting.capitalize (Names.localNameOf name)- in (Eithers.bind (Annotations.getTypeDescription cx g rawTyp) (\mdoc ->- let forallParams = collectForallParams rawTyp- typ = stripForalls rawTyp- typeParams = Lists.map (\v -> tsParam (Formatting.capitalize (Core.unName v))) forallParams- dtyp = Strip.deannotateType typ- in case dtyp of- Core.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->- let fname = Core.unName (Core.fieldTypeName ft)- ftyp = Core.fieldTypeType ft- in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Eithers.bind (Annotations.commentsFromFieldType cx g ft) (\mfdoc -> Right (tsPropSigWithDoc fname False sftyp (mkDocComment mfdoc)))))) v0) (\members -> Right (- mdoc,- (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {- Syntax.interfaceDeclarationName = (tsIdent lname),- Syntax.interfaceDeclarationTypeParameters = typeParams,- Syntax.interfaceDeclarationExtends = [],- Syntax.interfaceDeclarationMembers = members}))))- Core.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->- let fname = Core.unName (Core.fieldTypeName ft)- ftyp = Core.fieldTypeType ft- dtyp2 = Strip.deannotateType ftyp- in case dtyp2 of- Core.TypeUnit -> Right (Syntax.TypeExpressionObject [- tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = fname,- Syntax.stringLiteralSingleQuote = False})))])- _ -> Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [- tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = fname,- Syntax.stringLiteralSingleQuote = False}))),- (tsPropSig "value" False sftyp)]))) v0) (\arms -> Right (- mdoc,- (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {- Syntax.typeAliasDeclarationName = (tsIdent lname),- Syntax.typeAliasDeclarationTypeParameters = typeParams,- Syntax.typeAliasDeclarationType = (Syntax.TypeExpressionUnion arms)}))))- Core.TypeWrap v0 -> Eithers.bind (encodeType cx g currentNs v0) (\sftyp -> Right (- mdoc,- (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {- Syntax.interfaceDeclarationName = (tsIdent lname),- Syntax.interfaceDeclarationTypeParameters = typeParams,- Syntax.interfaceDeclarationExtends = [],- Syntax.interfaceDeclarationMembers = [- tsPropSig "value" False sftyp]}))))- _ -> Eithers.bind (encodeType cx g currentNs typ) (\styp -> Right (- mdoc,- (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {- Syntax.typeAliasDeclarationName = (tsIdent lname),- Syntax.typeAliasDeclarationTypeParameters = typeParams,- Syntax.typeAliasDeclarationType = styp}))))))---- | Try to encode a Hydra type as a TS type expression, falling back to any if encodeType fails-encodeTypeOrAny :: t0 -> t1 -> Packaging.ModuleName -> Core.Type -> Syntax.TypeExpression-encodeTypeOrAny cx g currentNs typ =- Eithers.either (\_e -> Syntax.TypeExpressionAny) (\te -> te) (encodeType cx g currentNs typ)---- | Keep only names whose module differs from the current module's-filterNonLocalNames :: Packaging.ModuleName -> S.Set Core.Name -> S.Set Core.Name-filterNonLocalNames currentNs names =- Sets.fromList (Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\nameNs -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName nameNs)) Nothing (Just n))) (Sets.toList names)))---- | Walk an application spine, returning the innermost head term and its arguments in application order-flattenApplication :: Core.Term -> (Core.Term, [Core.Term])-flattenApplication t =-- let dt = Strip.deannotateTerm t- in case dt of- Core.TermApplication v0 ->- let inner = flattenApplication (Core.applicationFunction v0)- head_ = Pairs.first inner- prevArgs = Pairs.second inner- in (head_, (Lists.concat2 prevArgs (Lists.singleton (Core.applicationArgument v0))))- _ -> (t, [])---- | Rewrite free occurrences of the given target names from x to x(undefined), forcing a thunked binding created by thunkLazyLet-forceLazyRefs :: S.Set Core.Name -> Core.Term -> Core.Term-forceLazyRefs targets0 term0 =- Rewriting.rewriteTermWithContext (\recurse0 -> \targets -> \term -> case term of- Core.TermVariable v0 -> Logic.ifElse (Sets.member v0 targets) (Core.TermApplication (Core.Application {- Core.applicationFunction = (Core.TermVariable v0),- Core.applicationArgument = Core.TermUnit})) term- Core.TermLambda v0 ->- let innerTargets = Sets.delete (Core.lambdaParameter v0) targets- in (recurse0 innerTargets term)- Core.TermLet v0 ->- let boundNames = Sets.fromList (Lists.map Core.bindingName (Core.letBindings v0))- innerTargets = Sets.difference targets boundNames- in (recurse0 innerTargets term)- _ -> recurse0 targets term) targets0 term0---- | Build a TS function declaration from a Hydra term by peeling lambdas and let bindings into explicit parameters, statements, and a body-functionDeclarationFromTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> String -> Core.Term -> Maybe Core.Type -> Syntax.FunctionDeclaration-functionDeclarationFromTerm cx g currentNs lname term _mScheme =-- let fsE = analyzeTypeScriptFunction cx g term- fs =- Eithers.either (\_err -> Typing.FunctionStructure {- Typing.functionStructureTypeParams = [],- Typing.functionStructureParams = [],- Typing.functionStructureBindings = [],- Typing.functionStructureBody = term,- Typing.functionStructureDomains = [],- Typing.functionStructureCodomain = Nothing,- Typing.functionStructureEnvironment = g}) (\ok -> ok) fsE- fsParams = Typing.functionStructureParams fs- fsDoms = Typing.functionStructureDomains fs- fsBindings0 = Typing.functionStructureBindings fs- fsBody0 = Typing.functionStructureBody fs- thunked = thunkLazyBindings fsBindings0 fsBody0- fsBindings = Pairs.first thunked- fsBody = Pairs.second thunked- fsEnv = Typing.functionStructureEnvironment fs- domPad = Core.TypeVariable (Core.Name "_")- fsDomsPadded = Lists.concat2 fsDoms (Lists.replicate (Math.sub (Lists.length fsParams) (Lists.length fsDoms)) domPad)- paramPatterns =- Lists.map (\pair -> encodeParam cx fsEnv currentNs (Pairs.first pair) (Pairs.second pair)) (Lists.zip fsParams fsDomsPadded)- sortedBindings = sortBindingsTopologically fsBindings- bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx fsEnv currentNs b) sortedBindings- bodyExpr = encodeTerm cx fsEnv currentNs fsBody- returnStmt = Syntax.StatementReturn (Just bodyExpr)- block = Lists.concat2 bindingStmts [- returnStmt]- in Syntax.FunctionDeclaration {- Syntax.functionDeclarationId = (tsIdent lname),- Syntax.functionDeclarationParams = paramPatterns,- Syntax.functionDeclarationBody = block,- Syntax.functionDeclarationAsync = False,- Syntax.functionDeclarationGenerator = False}---- | Render a set of qualified names as TypeScript import statements grouped by source module-importsToText :: S.Set String -> String -> Packaging.ModuleName -> S.Set Core.Name -> String-importsToText overlaySubs kind currentNs names =-- let pairs =- Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) Nothing (Just (ns, n)))) (Sets.toList names))- transformLocal =- \s -> Logic.ifElse (Equality.equal kind "type") (Formatting.capitalize s) (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords s)- importKeyword = Logic.ifElse (Equality.equal kind "type") "import type" "import"- grouped =- Lists.foldl (\acc -> \p ->- let ns = Pairs.first p- n = Pairs.second p- local = transformLocal (Names.localNameOf n)- existing = Optionals.withDefault [] (Maps.lookup ns acc)- in (Maps.insert ns (Lists.cons local existing) acc)) Maps.empty pairs- currentSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName currentNs))- currentDepth = Lists.length currentSegs- currentIsTest =- Logic.and (Logic.not (Lists.isEmpty currentSegs)) (Equality.equal (Optionals.withDefault "" (Lists.head currentSegs)) "test")- baseUpPrefix =- Logic.ifElse (Equality.equal currentDepth 1) "./" (Strings.concat (Lists.replicate (Math.sub currentDepth 1) "../"))- lines =- Lists.map (\entry ->- let ns = Pairs.first entry- locals = Pairs.second entry- targetSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))- targetIsTest =- Logic.and (Logic.not (Lists.isEmpty targetSegs)) (Equality.equal (Optionals.withDefault "" (Lists.head targetSegs)) "test")- targetSub = Optionals.withDefault "" (Lists.at 1 targetSegs)- targetPathSegs =- Logic.ifElse (Logic.and (Equality.equal (Optionals.withDefault "" (Lists.head targetSegs)) "lib") (Sets.member targetSub overlaySubs)) (Lists.concat2 [- "overlay",- "typescript"] targetSegs) targetSegs- targetPath = Strings.join "/" targetPathSegs- upPrefix =- Logic.ifElse (Logic.and currentIsTest (Logic.not targetIsTest)) (Strings.concat2 baseUpPrefix "../../../main/typescript/hydra/") baseUpPrefix- nsSlug = Strings.join "_" targetSegs- moduleAlias = Logic.ifElse (Equality.equal kind "type") (Strings.concat2 "$type_" nsSlug) (Strings.concat2 "$mod_" nsSlug)- in (Strings.concat [- importKeyword,- " * as ",- moduleAlias,- " from \"",- upPrefix,- targetPath,- ".js\";\n"])) (Maps.toList grouped)- in (Strings.concat lines)---- | Look up a primitive by name and return its per-parameter laziness flags in parameter order-lazyFlagsForPrimitive :: Graph.Graph -> Core.Name -> [Bool]-lazyFlagsForPrimitive g name =- Optionals.match (Maps.lookup name (Graph.graphPrimitives g)) [] (\prim -> Lists.map (\p -> Typing.parameterIsLazy p) (Typing.termSignatureParameters (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))))---- | True when a let-binding's value should be thunked to preserve Haskell's lazy evaluation semantics-letBindingIsThunkCandidate :: Core.Binding -> Bool-letBindingIsThunkCandidate b =-- let dterm = Strip.deannotateAndDetypeTerm (Core.bindingTerm b)- isLambda =- case dterm of- Core.TermLambda _ -> True- _ -> False- freeVars = Variables.freeVariablesInTerm (Core.bindingTerm b)- callsShow =- Lists.foldl (\acc -> \n -> Logic.or acc (Optionals.match (Names.moduleNameOf n) False (\mn -> Equality.equal (Lists.take 2 (Strings.splitOn "." (Packaging.unModuleName mn))) [- "hydra",- "show"]))) False (Sets.toList freeVars)- in (Logic.and (Logic.not isLambda) callsShow)---- | Build a documentation comment from an optional description string, or nothing if the description is missing or empty-mkDocComment :: Maybe String -> Maybe Syntax.DocumentationComment-mkDocComment mdesc =- Optionals.match mdesc Nothing (\d -> Logic.ifElse (Equality.equal d "") Nothing (Just (Syntax.DocumentationComment {- Syntax.documentationCommentDescription = (PrintDocs.renderDocStringWith tsDocEntityRef d),- Syntax.documentationCommentTags = []})))---- | Convert a Hydra module to a map from .ts file path to TypeScript source-moduleToTypeScript :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)-moduleToTypeScript overlaySubs mod defs cx g =-- let currentNs = Packaging.moduleName mod- partitioned = Environment.partitionDefinitions defs- typeDefs = Pairs.first partitioned- rawTermDefs = Pairs.second partitioned- termDefs = sortTermDefsTopologically currentNs rawTermDefs- typeImportsFromTypes =- Lists.foldl (\acc -> \td -> Sets.union acc (collectImports currentNs (Core.typeSchemeBody (Packaging.typeDefinitionBody td)))) Sets.empty typeDefs- typeImportsFromTerms =- Lists.foldl (\acc -> \td -> Optionals.match (Packaging.termDefinitionSignature td) acc (\sig -> Sets.union acc (collectImports currentNs (Core.typeSchemeBody (Scoping.termSignatureToTypeScheme sig))))) Sets.empty termDefs- typeImportsFromInner =- Lists.foldl (\acc -> \td -> Sets.union acc (collectInnerTypeImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs- typeImports = Sets.union (Sets.union typeImportsFromTypes typeImportsFromTerms) typeImportsFromInner- termImports =- Lists.foldl (\acc -> \td -> Sets.union acc (collectTermImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs- typeImportsBlock = importsToText overlaySubs "type" currentNs typeImports- termImportsBlock = importsToText overlaySubs "value" currentNs termImports- importsBlock = Strings.concat2 typeImportsBlock termImportsBlock- in (Eithers.bind (Eithers.mapList (encodeTypeDefinition cx g currentNs) typeDefs) (\typeItems ->- let termItems = Lists.map (encodeTermDefinition cx g currentNs) termDefs- allItems = Lists.concat2 typeItems termItems- mModuleDoc = Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em)- moduleDocText = Optionals.match mModuleDoc "" (\d -> Strings.concat2 (Serde.toTypeScriptComments d []) "\n\n")- header = Strings.concat2 "// Note: this is an automatically generated file. Do not edit.\n\n" moduleDocText- renderItem =- \docAndItem ->- let mdoc = Pairs.first docAndItem- item = Pairs.second docAndItem- itemText = printModuleItem item- in (Optionals.match mdoc itemText (\d -> Strings.concat [- Serde.toTypeScriptComments d [],- "\n",- itemText]))- body = Strings.join "\n\n" (Lists.map renderItem allItems)- filePath = Names.moduleNameToFilePath Util.CaseConventionCamel (File.FileExtension "ts") (Packaging.moduleName mod)- in (Right (Maps.singleton filePath (Strings.concat [- header,- importsBlock,- (Logic.ifElse (Equality.equal importsBlock "") "" "\n"),- body,- (Logic.ifElse (Equality.equal body "") "" "\n")])))))---- | Render an interface declaration-printInterfaceDeclaration :: Syntax.InterfaceDeclaration -> String-printInterfaceDeclaration decl =-- let name = Syntax.unIdentifier (Syntax.interfaceDeclarationName decl)- params = printTypeParameterList (Syntax.interfaceDeclarationTypeParameters decl)- exts = Syntax.interfaceDeclarationExtends decl- extClause =- Logic.ifElse (Lists.isEmpty exts) "" (Strings.concat2 " extends " (Strings.join ", " (Lists.map printTypeExpression exts)))- members = Syntax.interfaceDeclarationMembers decl- renderMember = \ps -> Strings.join "\n " (Formatting.lines (printPropertySignature ps))- body =- Logic.ifElse (Lists.isEmpty members) "" (Strings.concat [- "\n ",- (Strings.join ";\n " (Lists.map renderMember members)),- ";\n"])- in (Strings.concat [- "export interface ",- name,- params,- extClause,- " {",- body,- "}\n"])---- | Render a TypeScript literal as source text-printLiteral :: Syntax.Literal -> String-printLiteral lit =- case lit of- Syntax.LiteralString v0 -> tsEscapeString (Syntax.stringLiteralValue v0)- Syntax.LiteralBoolean v0 -> Logic.ifElse v0 "true" "false"- Syntax.LiteralNull -> "null"- Syntax.LiteralUndefined -> "undefined"- _ -> "null"---- | Render a top-level module item-printModuleItem :: Syntax.ModuleItem -> String-printModuleItem mi =- case mi of- Syntax.ModuleItemInterface v0 -> printInterfaceDeclaration v0- Syntax.ModuleItemTypeAlias v0 -> printTypeAliasDeclaration v0- Syntax.ModuleItemStatement _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)- Syntax.ModuleItemImport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)- Syntax.ModuleItemExport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)- _ -> ""---- | Render a property signature, with an optional JSDoc comment prepended-printPropertySignature :: Syntax.PropertySignature -> String-printPropertySignature ps =-- let mcomments = Syntax.propertySignatureComments ps- line =- Strings.concat [- Logic.ifElse (Syntax.propertySignatureReadonly ps) "readonly " "",- (Syntax.unIdentifier (Syntax.propertySignatureName ps)),- (Logic.ifElse (Syntax.propertySignatureOptional ps) "?" ""),- ": ",- (printTypeExpression (Syntax.propertySignatureType ps))]- in (Optionals.match mcomments line (\dc -> Strings.concat [- Serde.toTypeScriptComments (Syntax.documentationCommentDescription dc) (Syntax.documentationCommentTags dc),- "\n",- line]))---- | Render a type alias declaration-printTypeAliasDeclaration :: Syntax.TypeAliasDeclaration -> String-printTypeAliasDeclaration decl =-- let name = Syntax.unIdentifier (Syntax.typeAliasDeclarationName decl)- params = printTypeParameterList (Syntax.typeAliasDeclarationTypeParameters decl)- rhs = printTypeExpression (Syntax.typeAliasDeclarationType decl)- in (Strings.concat [- "export type ",- name,- params,- " = ",- rhs,- ";\n"])---- | Render a TypeScript type expression as source text-printTypeExpression :: Syntax.TypeExpression -> String-printTypeExpression t =- case t of- Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0- Syntax.TypeExpressionLiteral v0 -> printLiteral v0- Syntax.TypeExpressionArray v0 -> Strings.concat [- "ReadonlyArray<",- (printTypeExpression (Syntax.unArrayTypeExpression v0)),- ">"]- Syntax.TypeExpressionTuple v0 -> Strings.concat [- "readonly [",- (Strings.join ", " (Lists.map printTypeExpression v0)),- "]"]- Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map printTypeExpression v0)- Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map printTypeExpression v0)- Syntax.TypeExpressionParameterized v0 -> Strings.concat [- printTypeExpression (Syntax.parameterizedTypeExpressionBase v0),- "<",- (Strings.join ", " (Lists.map printTypeExpression (Syntax.parameterizedTypeExpressionArguments v0))),- ">"]- Syntax.TypeExpressionOptional v0 -> Strings.concat [- printTypeExpression v0,- " | undefined"]- Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (printTypeExpression v0)- Syntax.TypeExpressionObject v0 -> Strings.concat [- "{ ",- (Strings.join "; " (Lists.map printPropertySignature v0)),- " }"]- Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"- Syntax.TypeExpressionAny -> "any"- Syntax.TypeExpressionUnknown -> "unknown"- Syntax.TypeExpressionVoid -> "void"- Syntax.TypeExpressionNever -> "never"- _ -> "unknown"---- | Render one generic type parameter, with an optional extends constraint-printTypeParameter :: Syntax.TypeParameter -> String-printTypeParameter tp =-- let name = Syntax.unIdentifier (Syntax.typeParameterName tp)- constraint = Syntax.typeParameterConstraint tp- in (Optionals.match constraint name (\c -> Strings.concat [- name,- " extends ",- (printTypeExpression c)]))---- | Render a generic parameter list, or the empty string when there are no parameters-printTypeParameterList :: [Syntax.TypeParameter] -> String-printTypeParameterList tps =- Logic.ifElse (Lists.isEmpty tps) "" (Strings.concat [- "<",- (Strings.join ", " (Lists.map printTypeParameter tps)),- ">"])---- | Sanitize a Hydra parameter name into a valid, non-reserved TS identifier-sanitizeParamName :: Core.Name -> String-sanitizeParamName n = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf n)---- | Reorder let-bindings so each appears after the sibling bindings it depends on, avoiding JS temporal-dead-zone errors-sortBindingsTopologically :: [Core.Binding] -> [Core.Binding]-sortBindingsTopologically bindings =-- let byName = Maps.fromList (Lists.map (\b -> (Core.bindingName b, b)) bindings)- adjacency =- Lists.map (\b ->- let bname = Core.bindingName b- bterm = Core.bindingTerm b- freeVars = Variables.freeVariablesInTerm bterm- deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)- in (bname, deps)) bindings- sccs = Sorting.topologicalSortComponents adjacency- in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))---- | Reorder term definitions so each appears after the intra-module definitions it depends on-sortTermDefsTopologically :: t0 -> [Packaging.TermDefinition] -> [Packaging.TermDefinition]-sortTermDefsTopologically currentNs tdefs =-- let byName = Maps.fromList (Lists.map (\td -> (Packaging.termDefinitionName td, td)) tdefs)- adjacency =- Lists.map (\td ->- let tname = Packaging.termDefinitionName td- tterm = Packaging.termDefinitionBody td- freeVars = eagerFreeVariablesInTerm tterm- deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)- in (tname, deps)) tdefs- sccs = Sorting.topologicalSortComponents adjacency- in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))---- | Strip leading forall quantifiers from a type, returning the innermost body-stripForalls :: Core.Type -> Core.Type-stripForalls t =-- let dt = Strip.deannotateType t- in case dt of- Core.TypeForall v0 -> stripForalls (Core.forallTypeBody v0)- _ -> dt---- | If a term reduces, through annotations and type applications, to a variable reference, return its name-termHeadVariable :: Core.Term -> Maybe Core.Name-termHeadVariable t =-- let dt = Strip.deannotateTerm t- in case dt of- Core.TermVariable v0 -> Just v0- Core.TermTypeApplication v0 -> termHeadVariable (Core.typeApplicationTermBody v0)- _ -> Nothing---- | The bindings-and-body core of thunkLazyLet, shared by the Term_let encoder and the lifted-binding path in functionDeclarationFromTerm-thunkLazyBindings :: [Core.Binding] -> Core.Term -> ([Core.Binding], Core.Term)-thunkLazyBindings bindings body =-- let candidates = Lists.filter (\b -> letBindingIsThunkCandidate b) bindings- in (Logic.ifElse (Lists.isEmpty candidates) (bindings, body) (- let targets = Sets.fromList (Lists.map Core.bindingName candidates)- wrapCandidate =- \b -> Logic.ifElse (letBindingIsThunkCandidate b) (Core.Binding {- Core.bindingName = (Core.bindingName b),- Core.bindingTerm = (Core.TermLambda (Core.Lambda {- Core.lambdaParameter = (Core.Name "_"),- Core.lambdaDomain = Nothing,- Core.lambdaBody = (forceLazyRefs targets (Core.bindingTerm b))})),- Core.bindingTypeScheme = (Core.bindingTypeScheme b)}) (Core.Binding {- Core.bindingName = (Core.bindingName b),- Core.bindingTerm = (forceLazyRefs targets (Core.bindingTerm b)),- Core.bindingTypeScheme = (Core.bindingTypeScheme b)})- in (Lists.map wrapCandidate bindings, (forceLazyRefs targets body))))---- | Thunk every let-binding for which letBindingIsThunkCandidate holds, and rewrite forced references to it accordingly-thunkLazyLet :: Core.Let -> Core.Let-thunkLazyLet lt =-- let result = thunkLazyBindings (Core.letBindings lt) (Core.letBody lt)- in Core.Let {- Core.letBindings = (Pairs.first result),- Core.letBody = (Pairs.second result)}---- | An array expression: [e1, e2, ...]-tsArray :: [Syntax.Expression] -> Syntax.Expression-tsArray elems = Syntax.ExpressionArray (Lists.map (\e -> Syntax.ArrayElementExpression e) elems)---- | An untyped arrow function with an expression body-tsArrow :: [String] -> Syntax.Expression -> Syntax.Expression-tsArrow params body =- Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {- Syntax.arrowFunctionExpressionParams = (Lists.map (\p -> Syntax.PatternIdentifier (tsIdent p)) params),- Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),- Syntax.arrowFunctionExpressionAsync = False})---- | A typed arrow function with typed parameter patterns-tsArrowTyped :: [Syntax.Pattern] -> Syntax.Expression -> Syntax.Expression-tsArrowTyped patterns body =- Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {- Syntax.arrowFunctionExpressionParams = patterns,- Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),- Syntax.arrowFunctionExpressionAsync = False})---- | Wrap an expression in a TypeScript 'as any' cast-tsAsAny :: Syntax.Expression -> Syntax.Expression-tsAsAny e =- Syntax.ExpressionAsExpression (Syntax.AsExpression {- Syntax.asExpressionExpression = e,- Syntax.asExpressionType = Syntax.TypeExpressionAny})---- | A call expression, parenthesizing the callee when it's an arrow function or other ambiguous call target-tsCall :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression-tsCall callee args =- Syntax.ExpressionCall (Syntax.CallExpression {- Syntax.callExpressionCallee = callee,- Syntax.callExpressionArguments = args,- Syntax.callExpressionOptional = False})---- | A conditional (ternary) expression-tsCond :: Syntax.Expression -> Syntax.Expression -> Syntax.Expression -> Syntax.Expression-tsCond test cons alt =- Syntax.ExpressionConditional (Syntax.ConditionalExpression {- Syntax.conditionalExpressionTest = test,- Syntax.conditionalExpressionConsequent = cons,- Syntax.conditionalExpressionAlternate = alt})---- | Render a 'EntityReference' as TSDoc link syntax-tsDocEntityRef :: Packaging.EntityReference -> String-tsDocEntityRef x =- case x of- Packaging.EntityReferenceDefinition v0 -> Strings.concat2 "{@link " (Strings.concat2 (case v0 of- Packaging.DefinitionReferencePrimitive v1 -> Names.localNameOf v1- Packaging.DefinitionReferenceTerm v1 -> Names.localNameOf v1- Packaging.DefinitionReferenceType v1 -> Names.localNameOf v1) "}")- Packaging.EntityReferenceModule v0 -> Packaging.unModuleName v0- Packaging.EntityReferencePackage v0 -> Packaging.unPackageName v0- Packaging.EntityReferenceTermExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")- Packaging.EntityReferenceTypeExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")---- | Identity getter for analyzeFunctionTerm when the environment is a Graph-tsEnvGetGraph :: t0 -> t0-tsEnvGetGraph g = g---- | Setter for analyzeFunctionTerm when the environment is a Graph-tsEnvSetGraph :: t0 -> t1 -> t0-tsEnvSetGraph newG _old = newG---- | Escape a Hydra string for embedding as a double-quoted TypeScript string literal-tsEscapeString :: String -> String-tsEscapeString s =-- let escapeChar =- \c -> Logic.ifElse (Equality.equal c 34) "\\\"" (Logic.ifElse (Equality.equal c 92) "\\\\" (Logic.ifElse (Equality.equal c 10) "\\n" (Logic.ifElse (Equality.equal c 13) "\\r" (Logic.ifElse (Equality.equal c 9) "\\t" (Logic.ifElse (Equality.equal c 8) "\\b" (Logic.ifElse (Equality.equal c 12) "\\f" (Strings.fromList (Lists.singleton c))))))))- in (Strings.concat [- "\"",- (Strings.concat (Lists.map escapeChar (Strings.toList s))),- "\""])---- | A bare identifier expression-tsExprIdent :: String -> Syntax.Expression-tsExprIdent s = Syntax.ExpressionIdentifier (tsIdent s)---- | A string-literal expression-tsExprStr :: String -> Syntax.Expression-tsExprStr s =- Syntax.ExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {- Syntax.stringLiteralValue = s,- Syntax.stringLiteralSingleQuote = False}))---- | Wrap a string into a TypeScript identifier-tsIdent :: String -> Syntax.Identifier-tsIdent s = Syntax.Identifier s---- | A member-access expression: obj.prop-tsMember :: Syntax.Expression -> String -> Syntax.Expression-tsMember obj prop =- Syntax.ExpressionMember (Syntax.MemberExpression {- Syntax.memberExpressionObject = obj,- Syntax.memberExpressionProperty = (tsExprIdent prop),- Syntax.memberExpressionComputed = False,- Syntax.memberExpressionOptional = False})---- | A bare named type reference-tsNamedType :: String -> Syntax.TypeExpression-tsNamedType n = Syntax.TypeExpressionIdentifier (tsIdent n)---- | A new-expression: new C(args)-tsNew :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression-tsNew callee args =- Syntax.ExpressionNew (Syntax.CallExpression {- Syntax.callExpressionCallee = callee,- Syntax.callExpressionArguments = args,- Syntax.callExpressionOptional = False})---- | An object literal with identifier-style keys-tsObject :: [(String, Syntax.Expression)] -> Syntax.Expression-tsObject props =- Syntax.ExpressionObject (Lists.map (\kv ->- let k = Pairs.first kv- v = Pairs.second kv- in Syntax.Property {- Syntax.propertyKey = (tsExprIdent k),- Syntax.propertyValue = v,- Syntax.propertyKind = Syntax.PropertyKindInit,- Syntax.propertyComputed = False,- Syntax.propertyShorthand = False}) props)---- | A generic type parameter with no constraint-tsParam :: String -> Syntax.TypeParameter-tsParam n =- Syntax.TypeParameter {- Syntax.typeParameterName = (tsIdent n),- Syntax.typeParameterConstraint = Nothing,- Syntax.typeParameterDefault = Nothing}---- | A parameterized type with one type argument-tsParamApp1 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression-tsParamApp1 n arg =- Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {- Syntax.parameterizedTypeExpressionBase = (tsNamedType n),- Syntax.parameterizedTypeExpressionArguments = [- arg]})---- | A parameterized type with two type arguments-tsParamApp2 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression-tsParamApp2 n a b =- Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {- Syntax.parameterizedTypeExpressionBase = (tsNamedType n),- Syntax.parameterizedTypeExpressionArguments = [- a,- b]})---- | Wrap an expression in parentheses when its serialized form needs grouping-tsParen :: Syntax.Expression -> Syntax.Expression-tsParen e = Syntax.ExpressionParenthesized e---- | A readonly property signature, with the name sanitized for TS reserved words-tsPropSig :: String -> Bool -> Syntax.TypeExpression -> Syntax.PropertySignature-tsPropSig name optional typ = tsPropSigWithDoc name optional typ Nothing---- | A readonly property signature with an optional JSDoc comment above the property line-tsPropSigWithDoc :: String -> Bool -> Syntax.TypeExpression -> Maybe Syntax.DocumentationComment -> Syntax.PropertySignature-tsPropSigWithDoc name optional typ mcomments =-- let safe = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords name- in Syntax.PropertySignature {- Syntax.propertySignatureName = (tsIdent safe),- Syntax.propertySignatureType = typ,- Syntax.propertySignatureOptional = optional,- Syntax.propertySignatureReadonly = True,- Syntax.propertySignatureComments = mcomments}---- | A ReadonlyMap type with the given key and value types-tsReadonlyMap :: Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression-tsReadonlyMap k v = tsParamApp2 "ReadonlyMap" k v---- | A ReadonlySet type with the given element type-tsReadonlySet :: Syntax.TypeExpression -> Syntax.TypeExpression-tsReadonlySet t = tsParamApp1 "ReadonlySet" t---- | A tuple type-tsTuple :: [Syntax.TypeExpression] -> Syntax.TypeExpression-tsTuple ts = Syntax.TypeExpressionTuple ts---- | A typed-identifier pattern for a function parameter with a known domain type-tsTypedIdent :: String -> Syntax.TypeExpression -> Syntax.Pattern-tsTypedIdent name typ =- Syntax.PatternTyped (Syntax.TypedPattern {- Syntax.typedPatternPattern = (Syntax.PatternIdentifier (tsIdent name)),- Syntax.typedPatternType = typ})---- | The undefined value as an expression-tsUndefined :: Syntax.Expression-tsUndefined = tsExprIdent "undefined"
− src/main/haskell/Hydra/TypeScript/Language.hs
@@ -1,301 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | Language constraints and reserved words for TypeScript 5.x (ECMAScript 2024 base)--module Hydra.TypeScript.Language where--import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Set as S---- | Language constraints for TypeScript 5.x-typeScriptLanguage :: Coders.Language-typeScriptLanguage =- Coders.Language {- Coders.languageName = (Coders.LanguageName "hydra.typeScript"),- Coders.languageConstraints = Coders.LanguageConstraints {- Coders.languageConstraintsLiteralVariants = literalVariants,- Coders.languageConstraintsFloatTypes = floatTypes,- Coders.languageConstraintsIntegerTypes = integerTypes,- Coders.languageConstraintsTermVariants = termVariants,- Coders.languageConstraintsTypeVariants = typeVariants,- Coders.languageConstraintsTypes = typePredicate},- Coders.languageSupportedFeatures = (Sets.fromList [- Coders.LanguageFeatureNestedPolymorphicLetBindings]),- Coders.languageCaseConventions = Coders.CaseConventions {- Coders.caseConventionsConstant = Util.CaseConventionUpperSnake,- Coders.caseConventionsDirectory = Util.CaseConventionLowerSnake,- Coders.caseConventionsEnumValue = Util.CaseConventionPascal,- Coders.caseConventionsField = Util.CaseConventionCamel,- Coders.caseConventionsFile = Util.CaseConventionLowerSnake,- Coders.caseConventionsModule = Util.CaseConventionLowerSnake,- Coders.caseConventionsTerm = Util.CaseConventionCamel,- Coders.caseConventionsTermVariable = Util.CaseConventionCamel,- Coders.caseConventionsType = Util.CaseConventionPascal,- Coders.caseConventionsTypeVariable = Util.CaseConventionPascal},- Coders.languageDefaultFileExtension = (File.FileExtension "ts")}- where- literalVariants =- Sets.fromList [- Variants.LiteralVariantBinary,- Variants.LiteralVariantBoolean,- Variants.LiteralVariantDecimal,- Variants.LiteralVariantFloat,- Variants.LiteralVariantInteger,- Variants.LiteralVariantString]- floatTypes = Sets.fromList [- Core.FloatTypeFloat64]- integerTypes =- Sets.fromList [- Core.IntegerTypeInt32,- Core.IntegerTypeBigint]- termVariants =- Sets.fromList [- Variants.TermVariantAnnotated,- Variants.TermVariantApplication,- Variants.TermVariantEither,- Variants.TermVariantCases,- Variants.TermVariantLambda,- Variants.TermVariantProject,- Variants.TermVariantUnwrap,- Variants.TermVariantLet,- Variants.TermVariantList,- Variants.TermVariantLiteral,- Variants.TermVariantMap,- Variants.TermVariantOptional,- Variants.TermVariantPair,- Variants.TermVariantRecord,- Variants.TermVariantSet,- Variants.TermVariantTypeApplication,- Variants.TermVariantTypeLambda,- Variants.TermVariantInject,- Variants.TermVariantUnit,- Variants.TermVariantVariable,- Variants.TermVariantWrap]- typeVariants =- Sets.fromList [- Variants.TypeVariantAnnotated,- Variants.TypeVariantApplication,- Variants.TypeVariantEither,- Variants.TypeVariantFunction,- Variants.TypeVariantForall,- Variants.TypeVariantList,- Variants.TypeVariantLiteral,- Variants.TypeVariantMap,- Variants.TypeVariantOptional,- Variants.TypeVariantPair,- Variants.TypeVariantRecord,- Variants.TypeVariantSet,- Variants.TypeVariantUnion,- Variants.TypeVariantUnit,- Variants.TypeVariantVariable,- Variants.TypeVariantVoid,- Variants.TypeVariantWrap]- typePredicate = \_ -> True---- | A set of reserved words in TypeScript-typeScriptReservedWords :: S.Set String-typeScriptReservedWords =- Sets.fromList (Lists.concat [- keywords,- futureReserved,- strictModeReserved,- typeScriptKeywords,- builtIns,- hydraTypeScriptKeywords])- where- keywords =- [- "await",- "break",- "case",- "catch",- "class",- "const",- "continue",- "debugger",- "default",- "delete",- "do",- "else",- "enum",- "export",- "extends",- "false",- "finally",- "for",- "function",- "if",- "import",- "in",- "instanceof",- "let",- "new",- "null",- "return",- "super",- "switch",- "this",- "throw",- "true",- "try",- "typeof",- "undefined",- "var",- "void",- "while",- "with",- "yield"]- futureReserved =- [- "implements",- "interface",- "package",- "private",- "protected",- "public"]- strictModeReserved =- [- "arguments",- "eval",- "static",- "yield"]- typeScriptKeywords =- [- "abstract",- "as",- "asserts",- "assert",- "any",- "boolean",- "constructor",- "declare",- "from",- "get",- "global",- "infer",- "intrinsic",- "is",- "keyof",- "module",- "namespace",- "never",- "object",- "of",- "out",- "override",- "readonly",- "require",- "satisfies",- "set",- "string",- "symbol",- "type",- "unique",- "unknown",- "using"]- builtIns =- [- "Array",- "ArrayBuffer",- "BigInt",- "Boolean",- "DataView",- "Date",- "Error",- "Float32Array",- "Float64Array",- "Function",- "Int8Array",- "Int16Array",- "Int32Array",- "JSON",- "Map",- "Math",- "Number",- "Object",- "Promise",- "Proxy",- "Reflect",- "RegExp",- "Set",- "String",- "Symbol",- "Uint8Array",- "Uint8ClampedArray",- "Uint16Array",- "Uint32Array",- "WeakMap",- "WeakSet",- "decodeURI",- "decodeURIComponent",- "encodeURI",- "encodeURIComponent",- "eval",- "isFinite",- "isNaN",- "parseFloat",- "parseInt",- "console",- "document",- "global",- "globalThis",- "module",- "process",- "require",- "window"]- hydraTypeScriptKeywords =- [- "Name",- "FrozenMap",- "TERM_ANNOTATED",- "TERM_APPLICATION",- "TERM_EITHER",- "TERM_FUNCTION",- "TERM_LET",- "TERM_LIST",- "TERM_LITERAL",- "TERM_MAP",- "TERM_MAYBE",- "TERM_PAIR",- "TERM_RECORD",- "TERM_SET",- "TERM_TYPE_APPLICATION",- "TERM_TYPE_LAMBDA",- "TERM_UNION",- "TERM_UNIT",- "TERM_VARIABLE",- "TERM_WRAP"]
− src/main/haskell/Hydra/TypeScript/Operators.hs
@@ -1,196 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | AST operators for TypeScript with precedence and associativity--module Hydra.TypeScript.Operators where--import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | Addition operator (+)-addOp :: Ast.Op-addOp = Serialization.op "+" 14 Ast.AssociativityLeft---- | Function application (whitespace)-appOp :: Ast.Op-appOp =- Ast.Op {- Ast.opSymbol = (Ast.Symbol ""),- Ast.opPadding = Ast.Padding {- Ast.paddingLeft = Ast.WsNone,- Ast.paddingRight = Ast.WsNone},- Ast.opPrecedence = (Ast.Precedence 20),- Ast.opAssociativity = Ast.AssociativityLeft}---- | Arrow function operator (=>)-arrowOp :: Ast.Op-arrowOp = Serialization.op "=>" 2 Ast.AssociativityRight---- | Assignment operator (=)-assignOp :: Ast.Op-assignOp = Serialization.op "=" 2 Ast.AssociativityRight---- | Bitwise AND operator (&)-bitwiseAndOp :: Ast.Op-bitwiseAndOp = Serialization.op "&" 10 Ast.AssociativityLeft---- | Bitwise OR operator (|)-bitwiseOrOp :: Ast.Op-bitwiseOrOp = Serialization.op "|" 8 Ast.AssociativityLeft---- | Bitwise XOR operator (^)-bitwiseXorOp :: Ast.Op-bitwiseXorOp = Serialization.op "^" 9 Ast.AssociativityLeft---- | Type annotation colon (:)-colonOp :: Ast.Op-colonOp = Serialization.op ":" 0 Ast.AssociativityNone---- | Comma operator (,)-commaOp :: Ast.Op-commaOp = Serialization.op "," 1 Ast.AssociativityLeft---- | Definition operator (= in const x = ...)-defineOp :: Ast.Op-defineOp = Serialization.op "=" 0 Ast.AssociativityNone---- | Division operator (/)-divideOp :: Ast.Op-divideOp = Serialization.op "/" 15 Ast.AssociativityLeft---- | Equality operator (==)-equalOp :: Ast.Op-equalOp = Serialization.op "==" 11 Ast.AssociativityLeft---- | Exponentiation operator (**)-exponentiateOp :: Ast.Op-exponentiateOp = Serialization.op "**" 16 Ast.AssociativityRight---- | Greater than operator (>)-greaterThanOp :: Ast.Op-greaterThanOp = Serialization.op ">" 12 Ast.AssociativityLeft---- | Greater than or equal operator (>=)-greaterThanOrEqualOp :: Ast.Op-greaterThanOrEqualOp = Serialization.op ">=" 12 Ast.AssociativityLeft---- | In operator (in)-inOp :: Ast.Op-inOp = Serialization.op "in" 12 Ast.AssociativityLeft---- | Instance of operator (instanceof)-instanceOfOp :: Ast.Op-instanceOfOp = Serialization.op "instanceof" 12 Ast.AssociativityLeft---- | Left shift operator (<<)-leftShiftOp :: Ast.Op-leftShiftOp = Serialization.op "<<" 13 Ast.AssociativityLeft---- | Less than operator (<)-lessThanOp :: Ast.Op-lessThanOp = Serialization.op "<" 12 Ast.AssociativityLeft---- | Less than or equal operator (<=)-lessThanOrEqualOp :: Ast.Op-lessThanOrEqualOp = Serialization.op "<=" 12 Ast.AssociativityLeft---- | Logical AND operator (&&)-logicalAndOp :: Ast.Op-logicalAndOp = Serialization.op "&&" 6 Ast.AssociativityLeft---- | Logical OR operator (||)-logicalOrOp :: Ast.Op-logicalOrOp = Serialization.op "||" 5 Ast.AssociativityLeft---- | Member access operator (.)-memberOp :: Ast.Op-memberOp =- Ast.Op {- Ast.opSymbol = (Ast.Symbol "."),- Ast.opPadding = Ast.Padding {- Ast.paddingLeft = Ast.WsNone,- Ast.paddingRight = Ast.WsNone},- Ast.opPrecedence = (Ast.Precedence 20),- Ast.opAssociativity = Ast.AssociativityLeft}---- | Modulo operator (%)-moduloOp :: Ast.Op-moduloOp = Serialization.op "%" 15 Ast.AssociativityLeft---- | Multiplication operator (*)-multiplyOp :: Ast.Op-multiplyOp = Serialization.op "*" 15 Ast.AssociativityLeft---- | Inequality operator (!=)-notEqualOp :: Ast.Op-notEqualOp = Serialization.op "!=" 11 Ast.AssociativityLeft---- | Nullish coalescing operator (??)-nullishCoalescingOp :: Ast.Op-nullishCoalescingOp = Serialization.op "??" 4 Ast.AssociativityLeft---- | Optional chaining operator (?.)-optionalChainOp :: Ast.Op-optionalChainOp =- Ast.Op {- Ast.opSymbol = (Ast.Symbol "?."),- Ast.opPadding = Ast.Padding {- Ast.paddingLeft = Ast.WsNone,- Ast.paddingRight = Ast.WsNone},- Ast.opPrecedence = (Ast.Precedence 20),- Ast.opAssociativity = Ast.AssociativityLeft}---- | Right shift operator (>>)-rightShiftOp :: Ast.Op-rightShiftOp = Serialization.op ">>" 13 Ast.AssociativityLeft---- | Strict equality operator (===)-strictEqualOp :: Ast.Op-strictEqualOp = Serialization.op "===" 11 Ast.AssociativityLeft---- | Strict inequality operator (!==)-strictNotEqualOp :: Ast.Op-strictNotEqualOp = Serialization.op "!==" 11 Ast.AssociativityLeft---- | Subtraction operator (-)-subtractOp :: Ast.Op-subtractOp = Serialization.op "-" 14 Ast.AssociativityLeft---- | Ternary operator (?:) - represents the ? part-ternaryOp :: Ast.Op-ternaryOp = Serialization.op "?" 3 Ast.AssociativityRight---- | Unsigned right shift operator (>>>)-unsignedRightShiftOp :: Ast.Op-unsignedRightShiftOp = Serialization.op ">>>" 13 Ast.AssociativityLeft
− src/main/haskell/Hydra/TypeScript/Serde.hs
@@ -1,1081 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | Serialization functions for converting TypeScript AST to abstract expressions--module Hydra.TypeScript.Serde where--import qualified Hydra.Ast as Ast-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Docs as Docs-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.File as ErrorFile-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Error.System as ErrorSystem-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Regex as Regex-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.System as System-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Time as Time-import qualified Hydra.Topology as Topology-import qualified Hydra.TypeScript.Operators as Operators-import qualified Hydra.TypeScript.Syntax as Syntax-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | True iff every codepoint is an ASCII digit 0-9, and the list is non-empty-allDigits :: [Int] -> Bool-allDigits cps =- Logic.and (Ordering.gt (Lists.length cps) 0) (Lists.foldl (\acc -> \c -> Logic.and acc (Logic.and (Ordering.gte c 48) (Ordering.lte c 57))) True cps)---- | Convert an array element to an AST expression-arrayElementToExpr :: Syntax.ArrayElement -> Ast.Expr-arrayElementToExpr elem =- case elem of- Syntax.ArrayElementExpression v0 -> expressionToExpr v0- Syntax.ArrayElementSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))- Syntax.ArrayElementHole -> Serialization.cst ""---- | Convert an array expression to an AST expression-arrayExpressionToExpr :: [Syntax.ArrayElement] -> Ast.Expr-arrayExpressionToExpr arr = Serialization.bracketList Serialization.inlineStyle (Lists.map arrayElementToExpr arr)---- | Convert an array pattern to an AST expression-arrayPatternToExpr :: [Maybe Syntax.Pattern] -> Ast.Expr-arrayPatternToExpr arr =- Serialization.bracketList Serialization.inlineStyle (Lists.map (\maybeP -> Optionals.match maybeP (Serialization.cst "") patternToExpr) arr)---- | Convert an arrow function expression to an AST expression-arrowFunctionExpressionToExpr :: Syntax.ArrowFunctionExpression -> Ast.Expr-arrowFunctionExpressionToExpr arrow =-- let params = Syntax.arrowFunctionExpressionParams arrow- body = Syntax.arrowFunctionExpressionBody arrow- async = Syntax.arrowFunctionExpressionAsync arrow- asyncKw = Logic.ifElse async [- Serialization.cst "async"] []- paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)- bodyExpr =- case body of- Syntax.ArrowFunctionBodyExpression v0 -> case v0 of- Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr v0)- Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr v0)- _ -> expressionToExpr v0- Syntax.ArrowFunctionBodyBlock v0 -> blockStatementToExpr v0- in (Serialization.spaceSep (Lists.concat [- asyncKw,- [- Serialization.ifx Operators.arrowOp paramsExpr bodyExpr]]))---- | Convert an assignment expression to an AST expression-assignmentExpressionToExpr :: Syntax.AssignmentExpression -> Ast.Expr-assignmentExpressionToExpr assign =-- let op = Syntax.assignmentExpressionOperator assign- left = Syntax.assignmentExpressionLeft assign- right = Syntax.assignmentExpressionRight assign- opStr = assignmentOperatorToString op- in (Serialization.spaceSep [- patternToExpr left,- (Serialization.cst opStr),- (expressionToExpr right)])---- | Convert an assignment operator to a string-assignmentOperatorToString :: Syntax.AssignmentOperator -> String-assignmentOperatorToString op =- case op of- Syntax.AssignmentOperatorAssign -> "="- Syntax.AssignmentOperatorAddAssign -> "+="- Syntax.AssignmentOperatorSubtractAssign -> "-="- Syntax.AssignmentOperatorMultiplyAssign -> "*="- Syntax.AssignmentOperatorDivideAssign -> "/="- Syntax.AssignmentOperatorModuloAssign -> "%="- Syntax.AssignmentOperatorExponentiateAssign -> "**="- Syntax.AssignmentOperatorLeftShiftAssign -> "<<="- Syntax.AssignmentOperatorRightShiftAssign -> ">>="- Syntax.AssignmentOperatorUnsignedRightShiftAssign -> ">>>="- Syntax.AssignmentOperatorBitwiseAndAssign -> "&="- Syntax.AssignmentOperatorBitwiseOrAssign -> "|="- Syntax.AssignmentOperatorBitwiseXorAssign -> "^="- Syntax.AssignmentOperatorAndAssign -> "&&="- Syntax.AssignmentOperatorOrAssign -> "||="- Syntax.AssignmentOperatorNullishAssign -> "??="---- | Convert an assignment pattern to an AST expression-assignmentPatternToExpr :: Syntax.AssignmentPattern -> Ast.Expr-assignmentPatternToExpr assign =-- let left = Syntax.assignmentPatternLeft assign- right = Syntax.assignmentPatternRight assign- in (Serialization.ifx Operators.defineOp (patternToExpr left) (expressionToExpr right))---- | Convert a binary expression to an AST expression-binaryExpressionToExpr :: Syntax.BinaryExpression -> Ast.Expr-binaryExpressionToExpr bin =-- let op = Syntax.binaryExpressionOperator bin- left = Syntax.binaryExpressionLeft bin- right = Syntax.binaryExpressionRight bin- in (Serialization.ifx (binaryOperatorToExpr op) (expressionToExpr left) (expressionToExpr right))---- | Convert a binary operator to an Op-binaryOperatorToExpr :: Syntax.BinaryOperator -> Ast.Op-binaryOperatorToExpr op =- case op of- Syntax.BinaryOperatorAdd -> Operators.addOp- Syntax.BinaryOperatorSubtract -> Operators.subtractOp- Syntax.BinaryOperatorMultiply -> Operators.multiplyOp- Syntax.BinaryOperatorDivide -> Operators.divideOp- Syntax.BinaryOperatorModulo -> Operators.moduloOp- Syntax.BinaryOperatorExponentiate -> Operators.exponentiateOp- Syntax.BinaryOperatorEqual -> Operators.equalOp- Syntax.BinaryOperatorNotEqual -> Operators.notEqualOp- Syntax.BinaryOperatorStrictEqual -> Operators.strictEqualOp- Syntax.BinaryOperatorStrictNotEqual -> Operators.strictNotEqualOp- Syntax.BinaryOperatorLessThan -> Operators.lessThanOp- Syntax.BinaryOperatorLessThanOrEqual -> Operators.lessThanOrEqualOp- Syntax.BinaryOperatorGreaterThan -> Operators.greaterThanOp- Syntax.BinaryOperatorGreaterThanOrEqual -> Operators.greaterThanOrEqualOp- Syntax.BinaryOperatorAnd -> Operators.logicalAndOp- Syntax.BinaryOperatorOr -> Operators.logicalOrOp- Syntax.BinaryOperatorNullishCoalescing -> Operators.nullishCoalescingOp- Syntax.BinaryOperatorBitwiseAnd -> Operators.bitwiseAndOp- Syntax.BinaryOperatorBitwiseOr -> Operators.bitwiseOrOp- Syntax.BinaryOperatorBitwiseXor -> Operators.bitwiseXorOp- Syntax.BinaryOperatorLeftShift -> Operators.leftShiftOp- Syntax.BinaryOperatorRightShift -> Operators.rightShiftOp- Syntax.BinaryOperatorUnsignedRightShift -> Operators.unsignedRightShiftOp- Syntax.BinaryOperatorIn -> Operators.inOp- Syntax.BinaryOperatorInstanceof -> Operators.instanceOfOp---- | Convert a block statement to an AST expression. Renders as `{ stmt1\n stmt2\n ... }` using curlyBlock + newlineSep: statements are separated by newlines, NOT by commas (which curlyBracesList's default would insert and which TypeScript rejects between block statements).-blockStatementToExpr :: [Syntax.Statement] -> Ast.Expr-blockStatementToExpr block =- Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map statementToExpr block))---- | Convert a break statement to an AST expression-breakStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr-breakStatementToExpr b =- Optionals.match b (Serialization.cst "break;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "break",- (identifierToExpr label)]))---- | Convert a call expression to an AST expression-callExpressionToExpr :: Syntax.CallExpression -> Ast.Expr-callExpressionToExpr call =-- let callee = Syntax.callExpressionCallee call- args = Syntax.callExpressionArguments call- optional = Syntax.callExpressionOptional call- calleeExpr =- case callee of- Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr callee)- Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr callee)- Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr callee)- Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr callee)- Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr callee)- Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr callee)- Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr callee)- Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr callee)- _ -> expressionToExpr callee- argsExpr = Serialization.parenListAdaptive (Lists.map expressionToExpr args)- optionalDot = Logic.ifElse optional "?." ""- in (Serialization.spaceSep [- calleeExpr,- (Serialization.cst optionalDot),- argsExpr])---- | Convert a catch clause to an AST expression-catchClauseToExpr :: Syntax.CatchClause -> Ast.Expr-catchClauseToExpr c =-- let param = Syntax.catchClauseParam c- body = Syntax.catchClauseBody c- catchKw =- Optionals.match param (Serialization.cst "catch") (\p -> Serialization.spaceSep [- Serialization.cst "catch",- (Serialization.parens (patternToExpr p))])- in (Serialization.spaceSep [- catchKw,- (blockStatementToExpr body)])---- | Convert a class declaration to an AST expression-classDeclarationToExpr :: Syntax.ClassDeclaration -> Ast.Expr-classDeclarationToExpr cls =-- let id = Syntax.classDeclarationId cls- superClass = Syntax.classDeclarationSuperClass cls- body = Syntax.classDeclarationBody cls- extendsClause =- Optionals.match superClass [] (\s -> [- Serialization.cst "extends",- (expressionToExpr s)])- bodyExpr =- Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map methodDefinitionToExpr body))- in (Serialization.spaceSep (Lists.concat [- [- Serialization.cst "class",- (identifierToExpr id)],- extendsClause,- [- bodyExpr]]))---- | Convert a class declaration with comments to an AST expression-classDeclarationWithCommentsToExpr :: Syntax.ClassDeclarationWithComments -> Ast.Expr-classDeclarationWithCommentsToExpr cdwc =-- let body = Syntax.classDeclarationWithCommentsBody cdwc- mc = Syntax.classDeclarationWithCommentsComments cdwc- in (Optionals.match mc (classDeclarationToExpr body) (\c -> Serialization.newlineSep [- documentationCommentToExpr c,- (classDeclarationToExpr body)]))---- | Convert a conditional expression to an AST expression-conditionalExpressionToExpr :: Syntax.ConditionalExpression -> Ast.Expr-conditionalExpressionToExpr cond =-- let test = Syntax.conditionalExpressionTest cond- consequent = Syntax.conditionalExpressionConsequent cond- alternate = Syntax.conditionalExpressionAlternate cond- consExpr =- case consequent of- Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr consequent)- Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr consequent)- _ -> expressionToExpr consequent- altExpr =- case alternate of- Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr alternate)- Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr alternate)- _ -> expressionToExpr alternate- in (Serialization.spaceSep [- expressionToExpr test,- (Serialization.cst "?"),- consExpr,- (Serialization.cst ":"),- altExpr])---- | Convert a continue statement to an AST expression-continueStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr-continueStatementToExpr c =- Optionals.match c (Serialization.cst "continue;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "continue",- (identifierToExpr label)]))---- | Convert a do-while statement to an AST expression-doWhileStatementToExpr :: Syntax.DoWhileStatement -> Ast.Expr-doWhileStatementToExpr d =-- let body = Syntax.doWhileStatementBody d- test = Syntax.doWhileStatementTest d- in (Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "do",- (statementToExpr body),- (Serialization.cst "while"),- (Serialization.parens (expressionToExpr test))]))---- | Convert a documentation comment to an AST expression-documentationCommentToExpr :: Syntax.DocumentationComment -> Ast.Expr-documentationCommentToExpr doc =-- let description = Syntax.documentationCommentDescription doc- tags = Syntax.documentationCommentTags doc- in (Serialization.cst (toTypeScriptComments description tags))---- | Convert a documentation tag to a JSDoc line. Built by joining non-empty parts with spaces so that absent type/param/description components don't introduce trailing whitespace.-documentationTagToLine :: Syntax.DocumentationTag -> String-documentationTagToLine tag =-- let name = Syntax.documentationTagName tag- mtype = Syntax.documentationTagType tag- mparamName = Syntax.documentationTagParamName tag- description = Syntax.documentationTagDescription tag- typePart =- Optionals.match mtype "" (\t -> Strings.concat [- "{",- (typeExpressionToString t),- "}"])- paramPart = Optionals.match mparamName "" (\p -> Syntax.unIdentifier p)- parts =- [- Strings.concat2 "@" name,- typePart,- paramPart,- description]- nonEmpty = Lists.filter (\p -> Logic.not (Equality.equal p "")) parts- in (Strings.concat2 " * " (Strings.join " " nonEmpty))---- | Escape special characters in a string for TypeScript-escapeString :: String -> Bool -> String-escapeString s singleQuote =-- let replace = \old -> \new_ -> \str -> Strings.join new_ (Strings.splitOn old str)- s1 = replace "\\" "\\\\" s- s2 = replace "\n" "\\n" s1- s3 = replace "\r" "\\r" s2- s4 = replace "\t" "\\t" s3- in (Logic.ifElse singleQuote (replace "'" "\\'" s4) (replace "\"" "\\\"" s4))---- | Convert an export all declaration to an AST expression-exportAllToExpr :: Syntax.ExportAllDeclaration -> Ast.Expr-exportAllToExpr a =-- let exported = Syntax.exportAllDeclarationExported a- source = Syntax.exportAllDeclarationSource a- exportedClause =- Optionals.match exported (Serialization.cst "*") (\e -> Serialization.spaceSep [- Serialization.cst "*",- (Serialization.cst "as"),- (identifierToExpr e)])- in (Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "export",- exportedClause,- (Serialization.cst "from"),- (stringLiteralToExpr source)]))---- | Convert an export declaration to an AST expression-exportDeclarationToExpr :: Syntax.ExportDeclaration -> Ast.Expr-exportDeclarationToExpr exp =- case exp of- Syntax.ExportDeclarationNamed v0 -> namedExportToExpr v0- Syntax.ExportDeclarationDefault v0 -> Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "export",- (Serialization.cst "default"),- (expressionToExpr v0)])- Syntax.ExportDeclarationDeclaration v0 -> Serialization.spaceSep [- Serialization.cst "export",- (statementToExpr v0)]- Syntax.ExportDeclarationAll v0 -> exportAllToExpr v0---- | Convert an export specifier to an AST expression-exportSpecifierToExpr :: Syntax.ExportSpecifier -> Ast.Expr-exportSpecifierToExpr spec =-- let local = Syntax.exportSpecifierLocal spec- exported = Syntax.exportSpecifierExported spec- in (Logic.ifElse (Equality.equal (Syntax.unIdentifier local) (Syntax.unIdentifier exported)) (identifierToExpr local) (Serialization.spaceSep [- identifierToExpr local,- (Serialization.cst "as"),- (identifierToExpr exported)]))---- | Convert a TypeScript expression to an AST expression-expressionToExpr :: Syntax.Expression -> Ast.Expr-expressionToExpr expr =- case expr of- Syntax.ExpressionIdentifier v0 -> identifierToExpr v0- Syntax.ExpressionLiteral v0 -> literalToExpr v0- Syntax.ExpressionArray v0 -> arrayExpressionToExpr v0- Syntax.ExpressionObject v0 -> objectExpressionToExpr v0- Syntax.ExpressionFunction v0 -> functionExpressionToExpr v0- Syntax.ExpressionArrow v0 -> arrowFunctionExpressionToExpr v0- Syntax.ExpressionCall v0 -> callExpressionToExpr v0- Syntax.ExpressionMember v0 -> memberExpressionToExpr v0- Syntax.ExpressionConditional v0 -> conditionalExpressionToExpr v0- Syntax.ExpressionBinary v0 -> binaryExpressionToExpr v0- Syntax.ExpressionUnary v0 -> unaryExpressionToExpr v0- Syntax.ExpressionAssignment v0 -> assignmentExpressionToExpr v0- Syntax.ExpressionSequence v0 -> Serialization.parenListAdaptive (Lists.map expressionToExpr v0)- Syntax.ExpressionThis -> Serialization.cst "this"- Syntax.ExpressionNew v0 -> Serialization.spaceSep [- Serialization.cst "new",- (callExpressionToExpr v0)]- Syntax.ExpressionYield v0 -> Optionals.match v0 (Serialization.cst "yield") (\e -> Serialization.spaceSep [- Serialization.cst "yield",- (expressionToExpr e)])- Syntax.ExpressionAwait v0 -> Serialization.spaceSep [- Serialization.cst "await",- (expressionToExpr v0)]- Syntax.ExpressionSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))- Syntax.ExpressionParenthesized v0 -> Serialization.parens (expressionToExpr v0)- Syntax.ExpressionAsExpression v0 ->- let innerE = Syntax.asExpressionExpression v0- typ = Syntax.asExpressionType v0- in (Serialization.parens (Serialization.spaceSep [- expressionToExpr innerE,- (Serialization.cst "as"),- (Serialization.cst (tsTypeExpressionToString typ))]))---- | Convert a for-in statement to an AST expression-forInStatementToExpr :: Syntax.ForInStatement -> Ast.Expr-forInStatementToExpr f =-- let left = Syntax.forInStatementLeft f- right = Syntax.forInStatementRight f- body = Syntax.forInStatementBody f- leftExpr =- case left of- Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0- Syntax.ForInLeftPattern v0 -> patternToExpr v0- in (Serialization.spaceSep [- Serialization.cst "for",- (Serialization.parens (Serialization.spaceSep [- leftExpr,- (Serialization.cst "in"),- (expressionToExpr right)])),- (statementToExpr body)])---- | Convert a for-of statement to an AST expression-forOfStatementToExpr :: Syntax.ForOfStatement -> Ast.Expr-forOfStatementToExpr f =-- let await = Syntax.forOfStatementAwait f- left = Syntax.forOfStatementLeft f- right = Syntax.forOfStatementRight f- body = Syntax.forOfStatementBody f- forKw = Logic.ifElse await (Serialization.cst "for await") (Serialization.cst "for")- leftExpr =- case left of- Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0- Syntax.ForInLeftPattern v0 -> patternToExpr v0- in (Serialization.spaceSep [- forKw,- (Serialization.parens (Serialization.spaceSep [- leftExpr,- (Serialization.cst "of"),- (expressionToExpr right)])),- (statementToExpr body)])---- | Convert a for statement to an AST expression-forStatementToExpr :: Syntax.ForStatement -> Ast.Expr-forStatementToExpr f =-- let init = Syntax.forStatementInit f- test = Syntax.forStatementTest f- update = Syntax.forStatementUpdate f- body = Syntax.forStatementBody f- initExpr =- Optionals.match init (Serialization.cst "") (\i -> case i of- Syntax.ForInitVariable v0 -> variableDeclarationToExpr v0- Syntax.ForInitExpression v0 -> expressionToExpr v0)- testExpr = Optionals.match test (Serialization.cst "") expressionToExpr- updateExpr = Optionals.match update (Serialization.cst "") expressionToExpr- in (Serialization.spaceSep [- Serialization.cst "for",- (Serialization.parenListAdaptive [- initExpr,- testExpr,- updateExpr]),- (statementToExpr body)])---- | Format import specifiers, handling default vs named imports-formatImportSpecifiers :: [Ast.Expr] -> Ast.Expr-formatImportSpecifiers specs = Serialization.curlyBracesList Nothing Serialization.inlineStyle specs---- | Convert a function declaration to an AST expression-functionDeclarationToExpr :: Syntax.FunctionDeclaration -> Ast.Expr-functionDeclarationToExpr fn =-- let id = Syntax.functionDeclarationId fn- params = Syntax.functionDeclarationParams fn- body = Syntax.functionDeclarationBody fn- async = Syntax.functionDeclarationAsync fn- generator = Syntax.functionDeclarationGenerator fn- asyncKw = Logic.ifElse async [- Serialization.cst "async"] []- funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")- paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)- retAnnot = Serialization.cst ": any"- in (Serialization.spaceSep (Lists.concat [- asyncKw,- [- funcKw,- (identifierToExpr id),- paramsExpr,- retAnnot,- (blockStatementToExpr body)]]))---- | Convert a function declaration with comments to an AST expression-functionDeclarationWithCommentsToExpr :: Syntax.FunctionDeclarationWithComments -> Ast.Expr-functionDeclarationWithCommentsToExpr fdwc =-- let body = Syntax.functionDeclarationWithCommentsBody fdwc- mc = Syntax.functionDeclarationWithCommentsComments fdwc- in (Optionals.match mc (functionDeclarationToExpr body) (\c -> Serialization.newlineSep [- documentationCommentToExpr c,- (functionDeclarationToExpr body)]))---- | Convert a function expression to an AST expression-functionExpressionToExpr :: Syntax.FunctionExpression -> Ast.Expr-functionExpressionToExpr fn =-- let mid = Syntax.functionExpressionId fn- params = Syntax.functionExpressionParams fn- body = Syntax.functionExpressionBody fn- async = Syntax.functionExpressionAsync fn- generator = Syntax.functionExpressionGenerator fn- asyncKw = Logic.ifElse async [- Serialization.cst "async"] []- funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")- nameExpr = Optionals.match mid [] (\id -> [- identifierToExpr id])- paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)- in (Serialization.spaceSep (Lists.concat [- asyncKw,- [- funcKw],- nameExpr,- [- paramsExpr,- (blockStatementToExpr body)]]))---- | Convert an identifier to an AST expression-identifierToExpr :: Syntax.Identifier -> Ast.Expr-identifierToExpr id = Serialization.cst (Syntax.unIdentifier id)---- | Convert an if statement to an AST expression-ifStatementToExpr :: Syntax.IfStatement -> Ast.Expr-ifStatementToExpr ifStmt =-- let test = Syntax.ifStatementTest ifStmt- consequent = Syntax.ifStatementConsequent ifStmt- alternate = Syntax.ifStatementAlternate ifStmt- ifPart =- Serialization.spaceSep [- Serialization.cst "if",- (Serialization.parens (expressionToExpr test)),- (statementToExpr consequent)]- in (Optionals.match alternate ifPart (\alt -> Serialization.spaceSep [- ifPart,- (Serialization.cst "else"),- (statementToExpr alt)]))---- | Convert an import declaration to an AST expression-importDeclarationToExpr :: Syntax.ImportDeclaration -> Ast.Expr-importDeclarationToExpr imp =-- let specifiers = Syntax.importDeclarationSpecifiers imp- source = Syntax.importDeclarationSource imp- sourceExpr = stringLiteralToExpr source- specExprs = Lists.map importSpecifierToExpr specifiers- in (Logic.ifElse (Lists.isEmpty specifiers) (Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "import",- sourceExpr])) (Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "import",- (formatImportSpecifiers specExprs),- (Serialization.cst "from"),- sourceExpr])))---- | Convert an import specifier to an AST expression-importSpecifierToExpr :: Syntax.ImportClause -> Ast.Expr-importSpecifierToExpr spec =- case spec of- Syntax.ImportClauseNamed v0 ->- let imported = Syntax.importSpecifierImported v0- local = Syntax.importSpecifierLocal v0- in (Logic.ifElse (Equality.equal (Syntax.unIdentifier imported) (Syntax.unIdentifier local)) (identifierToExpr local) (Serialization.spaceSep [- identifierToExpr imported,- (Serialization.cst "as"),- (identifierToExpr local)]))- Syntax.ImportClauseDefault v0 -> identifierToExpr (Syntax.unImportDefaultSpecifier v0)- Syntax.ImportClauseNamespace v0 -> Serialization.spaceSep [- Serialization.cst "*",- (Serialization.cst "as"),- (identifierToExpr (Syntax.unImportNamespaceSpecifier v0))]---- | Detect a kernel-synthesized type-variable name like T0 or T12, which is unbound in inline type annotations-isKernelTypeVarName :: String -> Bool-isKernelTypeVarName s =-- let cps = Strings.toList s- len = Lists.length cps- first = Optionals.withDefault 0 (Lists.head cps)- rest = Logic.ifElse (Ordering.gt len 0) (Lists.drop 1 cps) []- in (Logic.and (Ordering.gt len 1) (Logic.and (Equality.equal first 84) (allDigits rest)))---- | Convert a labeled statement to an AST expression-labeledStatementToExpr :: Syntax.LabeledStatement -> Ast.Expr-labeledStatementToExpr l =-- let label = Syntax.labeledStatementLabel l- body = Syntax.labeledStatementBody l- in (Serialization.spaceSep [- Serialization.suffix ":" (identifierToExpr label),- (statementToExpr body)])---- | Convert a literal to an AST expression-literalToExpr :: Syntax.Literal -> Ast.Expr-literalToExpr lit =- case lit of- Syntax.LiteralString v0 -> stringLiteralToExpr v0- Syntax.LiteralNumber v0 -> numericLiteralToExpr v0- Syntax.LiteralBoolean v0 -> Serialization.cst (Logic.ifElse v0 "true" "false")- Syntax.LiteralNull -> Serialization.cst "null"- Syntax.LiteralUndefined -> Serialization.cst "undefined"- Syntax.LiteralBigInt v0 -> Serialization.cst (Strings.concat2 (Literals.printBigint v0) "n")- Syntax.LiteralTemplate v0 -> templateLiteralToExpr v0---- | Convert a member expression to an AST expression-memberExpressionToExpr :: Syntax.MemberExpression -> Ast.Expr-memberExpressionToExpr mem =-- let obj = Syntax.memberExpressionObject mem- prop = Syntax.memberExpressionProperty mem- computed = Syntax.memberExpressionComputed mem- optional = Syntax.memberExpressionOptional mem- objExpr =- case obj of- Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr obj)- Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr obj)- Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr obj)- Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr obj)- Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr obj)- Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr obj)- Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr obj)- Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr obj)- _ -> expressionToExpr obj- propExpr = expressionToExpr prop- in (Logic.ifElse computed (Serialization.spaceSep [- objExpr,- (Logic.ifElse optional (Serialization.cst "?.") (Serialization.cst "")),- (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle propExpr)]) (Serialization.ifx (Logic.ifElse optional Operators.optionalChainOp Operators.memberOp) objExpr propExpr))---- | Convert a method definition to an AST expression-methodDefinitionToExpr :: Syntax.MethodDefinition -> Ast.Expr-methodDefinitionToExpr method =-- let key = Syntax.methodDefinitionKey method- value = Syntax.methodDefinitionValue method- kind = Syntax.methodDefinitionKind method- computed = Syntax.methodDefinitionComputed method- static = Syntax.methodDefinitionStatic method- staticKw = Logic.ifElse static [- Serialization.cst "static"] []- kindKw =- case kind of- Syntax.MethodKindConstructor -> []- Syntax.MethodKindMethod -> []- Syntax.MethodKindGet -> [- Serialization.cst "get"]- Syntax.MethodKindSet -> [- Serialization.cst "set"]- keyExpr =- Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)- params = Syntax.functionExpressionParams value- body = Syntax.functionExpressionBody value- paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)- in (Serialization.spaceSep (Lists.concat [- staticKw,- kindKw,- [- keyExpr,- paramsExpr,- (blockStatementToExpr body)]]))---- | Convert a module item to an AST expression-moduleItemToExpr :: Syntax.ModuleItem -> Ast.Expr-moduleItemToExpr item =- case item of- Syntax.ModuleItemStatement v0 -> statementToExpr v0- Syntax.ModuleItemImport v0 -> importDeclarationToExpr v0- Syntax.ModuleItemExport v0 -> exportDeclarationToExpr v0---- | Convert a module item with comments to an AST expression-moduleItemWithCommentsToExpr :: Syntax.ModuleItemWithComments -> Ast.Expr-moduleItemWithCommentsToExpr miwc =-- let body = Syntax.moduleItemWithCommentsBody miwc- mc = Syntax.moduleItemWithCommentsComments miwc- in (Optionals.match mc (moduleItemToExpr body) (\c -> Serialization.newlineSep [- documentationCommentToExpr c,- (moduleItemToExpr body)]))---- | Convert a named export to an AST expression-namedExportToExpr :: Syntax.NamedExport -> Ast.Expr-namedExportToExpr n =-- let specifiers = Syntax.namedExportSpecifiers n- source = Syntax.namedExportSource n- specExprs = Lists.map exportSpecifierToExpr specifiers- fromClause =- Optionals.match source [] (\s -> [- Serialization.cst "from",- (stringLiteralToExpr s)])- in (Serialization.suffix ";" (Serialization.spaceSep (Lists.concat [- [- Serialization.cst "export"],- [- Serialization.curlyBracesList Nothing Serialization.inlineStyle specExprs],- fromClause])))---- | Convert a numeric literal to an AST expression-numericLiteralToExpr :: Syntax.NumericLiteral -> Ast.Expr-numericLiteralToExpr n =- case n of- Syntax.NumericLiteralInteger v0 -> Serialization.cst (Literals.printInt64 v0)- Syntax.NumericLiteralFloat v0 -> Serialization.cst (Literals.printFloat64 v0)---- | Convert an object expression to an AST expression-objectExpressionToExpr :: [Syntax.Property] -> Ast.Expr-objectExpressionToExpr obj =- Serialization.curlyBracesList Nothing Serialization.halfBlockStyle (Lists.map propertyToExpr obj)---- | Convert an object pattern property to an AST expression-objectPatternPropertyToExpr :: Syntax.ObjectPatternProperty -> Ast.Expr-objectPatternPropertyToExpr prop =- case prop of- Syntax.ObjectPatternPropertyProperty v0 -> propertyToExpr v0- Syntax.ObjectPatternPropertyRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))---- | Convert an object pattern to an AST expression-objectPatternToExpr :: Syntax.ObjectPattern -> Ast.Expr-objectPatternToExpr obj =-- let props = Syntax.objectPatternProperties obj- in (Serialization.curlyBracesList Nothing Serialization.inlineStyle (Lists.map objectPatternPropertyToExpr props))---- | Convert a pattern to an AST expression-patternToExpr :: Syntax.Pattern -> Ast.Expr-patternToExpr pat =- case pat of- Syntax.PatternIdentifier v0 -> identifierToExpr v0- Syntax.PatternObject v0 -> objectPatternToExpr v0- Syntax.PatternArray v0 -> arrayPatternToExpr v0- Syntax.PatternAssignment v0 -> assignmentPatternToExpr v0- Syntax.PatternRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))- Syntax.PatternTyped v0 -> typedPatternToExpr v0---- | Render a TS.Pattern as a plain string-patternToString :: Syntax.Pattern -> String-patternToString pat =- case pat of- Syntax.PatternIdentifier v0 -> Syntax.unIdentifier v0- Syntax.PatternRest v0 -> Strings.concat2 "..." (patternToString (Syntax.unRestElement v0))- Syntax.PatternTyped v0 -> Strings.concat [- patternToString (Syntax.typedPatternPattern v0),- ": ",- (tsTypeExpressionToString (Syntax.typedPatternType v0))]- _ -> "_"---- | Convert a TypeScript program to an AST expression-programToExpr :: Syntax.Program -> Ast.Expr-programToExpr prog =-- let body = Syntax.programBody prog- warning = [- Serialization.cst (toLineComment Constants.warningAutoGeneratedFile)]- items = Lists.map moduleItemToExpr body- in (Serialization.doubleNewlineSep (Lists.concat [- warning,- items]))---- | Convert an object property to an AST expression-propertyToExpr :: Syntax.Property -> Ast.Expr-propertyToExpr prop =-- let key = Syntax.propertyKey prop- value = Syntax.propertyValue prop- shorthand = Syntax.propertyShorthand prop- computed = Syntax.propertyComputed prop- keyExpr =- Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)- in (Logic.ifElse shorthand keyExpr (Serialization.ifx Operators.colonOp keyExpr (expressionToExpr value)))---- | Convert a return statement to an AST expression-returnStatementToExpr :: Maybe Syntax.Expression -> Ast.Expr-returnStatementToExpr r =- Optionals.match r (Serialization.cst "return;") (\e -> Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "return",- (expressionToExpr e)]))---- | Convert a statement to an AST expression-statementToExpr :: Syntax.Statement -> Ast.Expr-statementToExpr stmt =- case stmt of- Syntax.StatementExpression v0 -> Serialization.suffix ";" (expressionToExpr v0)- Syntax.StatementBlock v0 -> blockStatementToExpr v0- Syntax.StatementEmpty -> Serialization.cst ";"- Syntax.StatementDebugger -> Serialization.cst "debugger;"- Syntax.StatementReturn v0 -> returnStatementToExpr v0- Syntax.StatementBreak v0 -> breakStatementToExpr v0- Syntax.StatementContinue v0 -> continueStatementToExpr v0- Syntax.StatementIf v0 -> ifStatementToExpr v0- Syntax.StatementSwitch v0 -> switchStatementToExpr v0- Syntax.StatementThrow v0 -> throwStatementToExpr v0- Syntax.StatementTry v0 -> tryStatementToExpr v0- Syntax.StatementWhile v0 -> whileStatementToExpr v0- Syntax.StatementDoWhile v0 -> doWhileStatementToExpr v0- Syntax.StatementFor v0 -> forStatementToExpr v0- Syntax.StatementForIn v0 -> forInStatementToExpr v0- Syntax.StatementForOf v0 -> forOfStatementToExpr v0- Syntax.StatementVariableDeclaration v0 -> variableDeclarationToExpr v0- Syntax.StatementFunctionDeclaration v0 -> functionDeclarationToExpr v0- Syntax.StatementClassDeclaration v0 -> classDeclarationToExpr v0- Syntax.StatementLabeled v0 -> labeledStatementToExpr v0---- | Convert a string literal to an AST expression-stringLiteralToExpr :: Syntax.StringLiteral -> Ast.Expr-stringLiteralToExpr s =-- let value = Syntax.stringLiteralValue s- singleQuote = Syntax.stringLiteralSingleQuote s- quote = Logic.ifElse singleQuote "'" "\""- escaped = escapeString value singleQuote- in (Serialization.cst (Strings.concat [- quote,- escaped,- quote]))---- | Convert a switch case to an AST expression-switchCaseToExpr :: Syntax.SwitchCase -> Ast.Expr-switchCaseToExpr c =-- let test = Syntax.switchCaseTest c- consequent = Syntax.switchCaseConsequent c- caseLabel =- Optionals.match test (Serialization.cst "default:") (\t -> Serialization.spaceSep [- Serialization.cst "case",- (expressionToExpr t),- (Serialization.cst ":")])- in (Serialization.newlineSep (Lists.cons caseLabel (Lists.map statementToExpr consequent)))---- | Convert a switch statement to an AST expression-switchStatementToExpr :: Syntax.SwitchStatement -> Ast.Expr-switchStatementToExpr switchStmt =-- let discriminant = Syntax.switchStatementDiscriminant switchStmt- match = Syntax.switchStatementCases switchStmt- in (Serialization.spaceSep [- Serialization.cst "switch",- (Serialization.parens (expressionToExpr discriminant)),- (Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map switchCaseToExpr match)))])---- | Convert a template literal to an AST expression-templateLiteralToExpr :: Syntax.TemplateLiteral -> Ast.Expr-templateLiteralToExpr t =-- let quasis = Syntax.templateLiteralQuasis t- exprs = Syntax.templateLiteralExpressions t- in (Serialization.cst (Strings.concat [- "`",- (Strings.join "" (Lists.map (\q -> Syntax.templateElementValue q) quasis)),- "`"]))---- | Convert a throw statement to an AST expression-throwStatementToExpr :: Syntax.ThrowStatement -> Ast.Expr-throwStatementToExpr t =- Serialization.suffix ";" (Serialization.spaceSep [- Serialization.cst "throw",- (expressionToExpr (Syntax.unThrowStatement t))])---- | Convert a string to a TypeScript line comment. Empty source lines emit `//` (no trailing space).-toLineComment :: String -> String-toLineComment s =- Strings.join "\n" (Lists.map (\line -> Logic.ifElse (Equality.equal line "") "//" (Strings.concat2 "// " line)) (Formatting.lines s))---- | Format a description and tags as a JSDoc comment. Empty doc lines emit ` *` (no trailing space) so blank lines don't carry trailing whitespace.-toTypeScriptComments :: String -> [Syntax.DocumentationTag] -> String-toTypeScriptComments desc tags =-- let descLines =- Logic.ifElse (Equality.equal desc "") [] (Lists.map (\line -> Logic.ifElse (Equality.equal line "") " *" (Strings.concat2 " * " line)) (Formatting.lines desc))- tagLines = Lists.map documentationTagToLine tags- allLines =- Lists.concat [- descLines,- tagLines]- in (Logic.ifElse (Lists.isEmpty allLines) "" (Strings.join "\n" (Lists.concat [- [- "/**"],- allLines,- [- " */"]])))---- | Convert a try statement to an AST expression-tryStatementToExpr :: Syntax.TryStatement -> Ast.Expr-tryStatementToExpr t =-- let block = Syntax.tryStatementBlock t- handler = Syntax.tryStatementHandler t- finalizer = Syntax.tryStatementFinalizer t- tryPart =- Serialization.spaceSep [- Serialization.cst "try",- (blockStatementToExpr block)]- catchPart = Optionals.match handler [] (\c -> [- catchClauseToExpr c])- finallyPart =- Optionals.match finalizer [] (\f -> [- Serialization.spaceSep [- Serialization.cst "finally",- (blockStatementToExpr f)]])- in (Serialization.spaceSep (Lists.concat [- [- tryPart],- catchPart,- finallyPart]))---- | Render a TypeScript type expression as a string in TS syntax-tsTypeExpressionToString :: Syntax.TypeExpression -> String-tsTypeExpressionToString t =- case t of- Syntax.TypeExpressionIdentifier v0 ->- let raw = Syntax.unIdentifier v0- in (Logic.ifElse (isKernelTypeVarName raw) "any" raw)- Syntax.TypeExpressionAny -> "any"- Syntax.TypeExpressionVoid -> "void"- Syntax.TypeExpressionNever -> "never"- Syntax.TypeExpressionArray v0 -> Strings.concat [- "ReadonlyArray<",- (tsTypeExpressionToString (Syntax.unArrayTypeExpression v0)),- ">"]- Syntax.TypeExpressionTuple v0 -> Strings.concat [- "readonly [",- (Strings.join ", " (Lists.map tsTypeExpressionToString v0)),- "]"]- Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map tsTypeExpressionToString v0)- Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map tsTypeExpressionToString v0)- Syntax.TypeExpressionParameterized v0 -> Strings.concat [- tsTypeExpressionToString (Syntax.parameterizedTypeExpressionBase v0),- "<",- (Strings.join ", " (Lists.map tsTypeExpressionToString (Syntax.parameterizedTypeExpressionArguments v0))),- ">"]- Syntax.TypeExpressionOptional v0 -> Strings.concat [- tsTypeExpressionToString v0,- " | undefined"]- Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (tsTypeExpressionToString v0)- Syntax.TypeExpressionUnknown -> "unknown"- Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"- _ -> "unknown"---- | Convert a type expression to a string for JSDoc-typeExpressionToString :: Syntax.TypeExpression -> String-typeExpressionToString typ =- case typ of- Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0- Syntax.TypeExpressionAny -> "*"- Syntax.TypeExpressionVoid -> "void"- Syntax.TypeExpressionNever -> "never"- Syntax.TypeExpressionLiteral _ -> "literal"- Syntax.TypeExpressionArray v0 -> Strings.concat2 (typeExpressionToString (Syntax.unArrayTypeExpression v0)) "[]"- Syntax.TypeExpressionFunction v0 ->- let params = Syntax.functionTypeExpressionParameters v0- rt = Syntax.functionTypeExpressionReturnType v0- rendered =- Pairs.second (Lists.foldl (\acc -> \p ->- let i = Pairs.first acc- soFar = Pairs.second acc- this =- Strings.concat [- "_a",- (Literals.printInt32 i),- ": ",- (typeExpressionToString p)]- in (Math.add i 1, (Lists.concat2 soFar (Lists.singleton this)))) (0, []) params)- in (Strings.concat [- "(",- (Strings.join ", " rendered),- ") => ",- (typeExpressionToString rt)])- Syntax.TypeExpressionObject _ -> "Object"- Syntax.TypeExpressionUnion v0 -> Strings.join "|" (Lists.map typeExpressionToString v0)- Syntax.TypeExpressionParameterized v0 ->- let base = Syntax.parameterizedTypeExpressionBase v0- args = Syntax.parameterizedTypeExpressionArguments v0- in (Strings.concat [- typeExpressionToString base,- "<",- (Strings.join ", " (Lists.map typeExpressionToString args)),- ">"])- Syntax.TypeExpressionOptional v0 -> Strings.concat2 "?" (typeExpressionToString v0)---- | Render `<pattern>: <type>` (TypeScript parameter / variable type annotation)-typedPatternToExpr :: Syntax.TypedPattern -> Ast.Expr-typedPatternToExpr tp =-- let innerPat = Syntax.typedPatternPattern tp- typ = Syntax.typedPatternType tp- innerStr = patternToString innerPat- typeStr = tsTypeExpressionToString typ- in (Serialization.cst (Strings.concat [- innerStr,- ": ",- typeStr]))---- | Convert a unary expression to an AST expression-unaryExpressionToExpr :: Syntax.UnaryExpression -> Ast.Expr-unaryExpressionToExpr un =-- let op = Syntax.unaryExpressionOperator un- arg = Syntax.unaryExpressionArgument un- prefix = Syntax.unaryExpressionPrefix un- opStr = unaryOperatorToString op- argExpr = expressionToExpr arg- in (Logic.ifElse prefix (Serialization.prefix opStr argExpr) (Serialization.suffix opStr argExpr))---- | Convert a unary operator to a string-unaryOperatorToString :: Syntax.UnaryOperator -> String-unaryOperatorToString op =- case op of- Syntax.UnaryOperatorNegate -> "-"- Syntax.UnaryOperatorPlus -> "+"- Syntax.UnaryOperatorNot -> "!"- Syntax.UnaryOperatorBitwiseNot -> "~"- Syntax.UnaryOperatorTypeof -> "typeof "- Syntax.UnaryOperatorVoid -> "void "- Syntax.UnaryOperatorDelete -> "delete "- Syntax.UnaryOperatorIncrement -> "++"- Syntax.UnaryOperatorDecrement -> "--"---- | Convert a variable declaration to an AST expression-variableDeclarationToExpr :: Syntax.VariableDeclaration -> Ast.Expr-variableDeclarationToExpr decl =-- let kind = Syntax.variableDeclarationKind decl- declarations = Syntax.variableDeclarationDeclarations decl- in (Serialization.suffix ";" (Serialization.spaceSep [- variableKindToExpr kind,- (Serialization.commaSep Serialization.inlineStyle (Lists.map variableDeclaratorToExpr declarations))]))---- | Convert a variable declarator to an AST expression-variableDeclaratorToExpr :: Syntax.VariableDeclarator -> Ast.Expr-variableDeclaratorToExpr decl =-- let id = Syntax.variableDeclaratorId decl- init = Syntax.variableDeclaratorInit decl- in (Optionals.match init (patternToExpr id) (\e -> Serialization.ifx Operators.defineOp (patternToExpr id) (expressionToExpr e)))---- | Convert a variable kind to an AST expression-variableKindToExpr :: Syntax.VariableKind -> Ast.Expr-variableKindToExpr kind =- case kind of- Syntax.VariableKindVar -> Serialization.cst "var"- Syntax.VariableKindLet -> Serialization.cst "let"- Syntax.VariableKindConst -> Serialization.cst "const"---- | Convert a while statement to an AST expression-whileStatementToExpr :: Syntax.WhileStatement -> Ast.Expr-whileStatementToExpr w =-- let test = Syntax.whileStatementTest w- body = Syntax.whileStatementBody w- in (Serialization.spaceSep [- Serialization.cst "while",- (Serialization.parens (expressionToExpr test)),- (statementToExpr body)])
− src/main/haskell/Hydra/TypeScript/Syntax.hs
@@ -1,1730 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | A TypeScript 5.x syntax model for Hydra code generation--module Hydra.TypeScript.Syntax where--import qualified Hydra.Core as Core-import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Int as I---- | An element in an array expression-data ArrayElement =- -- | A regular expression element- ArrayElementExpression Expression |- -- | A spread element ...x- ArrayElementSpread SpreadElement |- -- | An empty slot (elision)- ArrayElementHole- deriving (Eq, Ord, Read, Show)--_ArrayElement = Core.Name "hydra.typeScript.syntax.ArrayElement"--_ArrayElement_expression = Core.Name "expression"--_ArrayElement_spread = Core.Name "spread"--_ArrayElement_hole = Core.Name "hole"---- | An array expression [a, b, c]-type ArrayExpression = [ArrayElement]--_ArrayExpression = Core.Name "hydra.typeScript.syntax.ArrayExpression"---- | An array destructuring pattern [a, b, c]-type ArrayPattern = [Maybe Pattern]--_ArrayPattern = Core.Name "hydra.typeScript.syntax.ArrayPattern"---- | An array type (T[])-newtype ArrayTypeExpression =- ArrayTypeExpression {- unArrayTypeExpression :: TypeExpression}- deriving (Eq, Ord, Read, Show)--_ArrayTypeExpression = Core.Name "hydra.typeScript.syntax.ArrayTypeExpression"---- | The body of an arrow function (expression or block)-data ArrowFunctionBody =- ArrowFunctionBodyExpression Expression |- ArrowFunctionBodyBlock BlockStatement- deriving (Eq, Ord, Read, Show)--_ArrowFunctionBody = Core.Name "hydra.typeScript.syntax.ArrowFunctionBody"--_ArrowFunctionBody_expression = Core.Name "expression"--_ArrowFunctionBody_block = Core.Name "block"---- | An arrow function expression-data ArrowFunctionExpression =- ArrowFunctionExpression {- -- | Function parameters- arrowFunctionExpressionParams :: [Pattern],- -- | Function body (expression or block)- arrowFunctionExpressionBody :: ArrowFunctionBody,- -- | Whether the function is async- arrowFunctionExpressionAsync :: Bool}- deriving (Eq, Ord, Read, Show)--_ArrowFunctionExpression = Core.Name "hydra.typeScript.syntax.ArrowFunctionExpression"--_ArrowFunctionExpression_params = Core.Name "params"--_ArrowFunctionExpression_body = Core.Name "body"--_ArrowFunctionExpression_async = Core.Name "async"---- | A TypeScript `<expression> as <type>` cast-data AsExpression =- AsExpression {- -- | The expression being cast- asExpressionExpression :: Expression,- -- | The target type- asExpressionType :: TypeExpression}- deriving (Eq, Ord, Read, Show)--_AsExpression = Core.Name "hydra.typeScript.syntax.AsExpression"--_AsExpression_expression = Core.Name "expression"--_AsExpression_type = Core.Name "type"---- | An assignment expression-data AssignmentExpression =- AssignmentExpression {- assignmentExpressionOperator :: AssignmentOperator,- assignmentExpressionLeft :: Pattern,- assignmentExpressionRight :: Expression}- deriving (Eq, Ord, Read, Show)--_AssignmentExpression = Core.Name "hydra.typeScript.syntax.AssignmentExpression"--_AssignmentExpression_operator = Core.Name "operator"--_AssignmentExpression_left = Core.Name "left"--_AssignmentExpression_right = Core.Name "right"---- | An assignment operator-data AssignmentOperator =- -- | =- AssignmentOperatorAssign |- -- | +=- AssignmentOperatorAddAssign |- -- | -=- AssignmentOperatorSubtractAssign |- -- | *=- AssignmentOperatorMultiplyAssign |- -- | /=- AssignmentOperatorDivideAssign |- -- | %=- AssignmentOperatorModuloAssign |- -- | **=- AssignmentOperatorExponentiateAssign |- -- | <<=- AssignmentOperatorLeftShiftAssign |- -- | >>=- AssignmentOperatorRightShiftAssign |- -- | >>>=- AssignmentOperatorUnsignedRightShiftAssign |- -- | &=- AssignmentOperatorBitwiseAndAssign |- -- | |=- AssignmentOperatorBitwiseOrAssign |- -- | ^=- AssignmentOperatorBitwiseXorAssign |- -- | &&=- AssignmentOperatorAndAssign |- -- | ||=- AssignmentOperatorOrAssign |- -- | ??=- AssignmentOperatorNullishAssign- deriving (Eq, Ord, Read, Show)--_AssignmentOperator = Core.Name "hydra.typeScript.syntax.AssignmentOperator"--_AssignmentOperator_assign = Core.Name "assign"--_AssignmentOperator_addAssign = Core.Name "addAssign"--_AssignmentOperator_subtractAssign = Core.Name "subtractAssign"--_AssignmentOperator_multiplyAssign = Core.Name "multiplyAssign"--_AssignmentOperator_divideAssign = Core.Name "divideAssign"--_AssignmentOperator_moduloAssign = Core.Name "moduloAssign"--_AssignmentOperator_exponentiateAssign = Core.Name "exponentiateAssign"--_AssignmentOperator_leftShiftAssign = Core.Name "leftShiftAssign"--_AssignmentOperator_rightShiftAssign = Core.Name "rightShiftAssign"--_AssignmentOperator_unsignedRightShiftAssign = Core.Name "unsignedRightShiftAssign"--_AssignmentOperator_bitwiseAndAssign = Core.Name "bitwiseAndAssign"--_AssignmentOperator_bitwiseOrAssign = Core.Name "bitwiseOrAssign"--_AssignmentOperator_bitwiseXorAssign = Core.Name "bitwiseXorAssign"--_AssignmentOperator_andAssign = Core.Name "andAssign"--_AssignmentOperator_orAssign = Core.Name "orAssign"--_AssignmentOperator_nullishAssign = Core.Name "nullishAssign"---- | A pattern with default value (param = default)-data AssignmentPattern =- AssignmentPattern {- assignmentPatternLeft :: Pattern,- assignmentPatternRight :: Expression}- deriving (Eq, Ord, Read, Show)--_AssignmentPattern = Core.Name "hydra.typeScript.syntax.AssignmentPattern"--_AssignmentPattern_left = Core.Name "left"--_AssignmentPattern_right = Core.Name "right"---- | A binary operation expression-data BinaryExpression =- BinaryExpression {- binaryExpressionOperator :: BinaryOperator,- binaryExpressionLeft :: Expression,- binaryExpressionRight :: Expression}- deriving (Eq, Ord, Read, Show)--_BinaryExpression = Core.Name "hydra.typeScript.syntax.BinaryExpression"--_BinaryExpression_operator = Core.Name "operator"--_BinaryExpression_left = Core.Name "left"--_BinaryExpression_right = Core.Name "right"---- | A binary operator-data BinaryOperator =- -- | +- BinaryOperatorAdd |- -- | -- BinaryOperatorSubtract |- -- | *- BinaryOperatorMultiply |- -- | /- BinaryOperatorDivide |- -- | %- BinaryOperatorModulo |- -- | **- BinaryOperatorExponentiate |- -- | ==- BinaryOperatorEqual |- -- | !=- BinaryOperatorNotEqual |- -- | ===- BinaryOperatorStrictEqual |- -- | !==- BinaryOperatorStrictNotEqual |- -- | <- BinaryOperatorLessThan |- -- | <=- BinaryOperatorLessThanOrEqual |- -- | >- BinaryOperatorGreaterThan |- -- | >=- BinaryOperatorGreaterThanOrEqual |- -- | &&- BinaryOperatorAnd |- -- | ||- BinaryOperatorOr |- -- | ??- BinaryOperatorNullishCoalescing |- -- | &- BinaryOperatorBitwiseAnd |- -- | |- BinaryOperatorBitwiseOr |- -- | ^- BinaryOperatorBitwiseXor |- -- | <<- BinaryOperatorLeftShift |- -- | >>- BinaryOperatorRightShift |- -- | >>>- BinaryOperatorUnsignedRightShift |- -- | in- BinaryOperatorIn |- -- | instanceof- BinaryOperatorInstanceof- deriving (Eq, Ord, Read, Show)--_BinaryOperator = Core.Name "hydra.typeScript.syntax.BinaryOperator"--_BinaryOperator_add = Core.Name "add"--_BinaryOperator_subtract = Core.Name "subtract"--_BinaryOperator_multiply = Core.Name "multiply"--_BinaryOperator_divide = Core.Name "divide"--_BinaryOperator_modulo = Core.Name "modulo"--_BinaryOperator_exponentiate = Core.Name "exponentiate"--_BinaryOperator_equal = Core.Name "equal"--_BinaryOperator_notEqual = Core.Name "notEqual"--_BinaryOperator_strictEqual = Core.Name "strictEqual"--_BinaryOperator_strictNotEqual = Core.Name "strictNotEqual"--_BinaryOperator_lessThan = Core.Name "lessThan"--_BinaryOperator_lessThanOrEqual = Core.Name "lessThanOrEqual"--_BinaryOperator_greaterThan = Core.Name "greaterThan"--_BinaryOperator_greaterThanOrEqual = Core.Name "greaterThanOrEqual"--_BinaryOperator_and = Core.Name "and"--_BinaryOperator_or = Core.Name "or"--_BinaryOperator_nullishCoalescing = Core.Name "nullishCoalescing"--_BinaryOperator_bitwiseAnd = Core.Name "bitwiseAnd"--_BinaryOperator_bitwiseOr = Core.Name "bitwiseOr"--_BinaryOperator_bitwiseXor = Core.Name "bitwiseXor"--_BinaryOperator_leftShift = Core.Name "leftShift"--_BinaryOperator_rightShift = Core.Name "rightShift"--_BinaryOperator_unsignedRightShift = Core.Name "unsignedRightShift"--_BinaryOperator_in = Core.Name "in"--_BinaryOperator_instanceof = Core.Name "instanceof"---- | A block statement { ... }-type BlockStatement = [Statement]--_BlockStatement = Core.Name "hydra.typeScript.syntax.BlockStatement"---- | A break statement-type BreakStatement = (Maybe Identifier)--_BreakStatement = Core.Name "hydra.typeScript.syntax.BreakStatement"---- | A function call expression-data CallExpression =- CallExpression {- -- | The function being called- callExpressionCallee :: Expression,- -- | The arguments- callExpressionArguments :: [Expression],- -- | Whether using optional chaining (?.)- callExpressionOptional :: Bool}- deriving (Eq, Ord, Read, Show)--_CallExpression = Core.Name "hydra.typeScript.syntax.CallExpression"--_CallExpression_callee = Core.Name "callee"--_CallExpression_arguments = Core.Name "arguments"--_CallExpression_optional = Core.Name "optional"---- | A catch clause-data CatchClause =- CatchClause {- -- | The catch parameter (can be omitted in ES2019+)- catchClauseParam :: (Maybe Pattern),- catchClauseBody :: BlockStatement}- deriving (Eq, Ord, Read, Show)--_CatchClause = Core.Name "hydra.typeScript.syntax.CatchClause"--_CatchClause_param = Core.Name "param"--_CatchClause_body = Core.Name "body"---- | A class body-type ClassBody = [MethodDefinition]--_ClassBody = Core.Name "hydra.typeScript.syntax.ClassBody"---- | A class declaration-data ClassDeclaration =- ClassDeclaration {- -- | Class name- classDeclarationId :: Identifier,- -- | Optional superclass- classDeclarationSuperClass :: (Maybe Expression),- -- | Class body- classDeclarationBody :: ClassBody}- deriving (Eq, Ord, Read, Show)--_ClassDeclaration = Core.Name "hydra.typeScript.syntax.ClassDeclaration"--_ClassDeclaration_id = Core.Name "id"--_ClassDeclaration_superClass = Core.Name "superClass"--_ClassDeclaration_body = Core.Name "body"---- | A class declaration with optional JSDoc-data ClassDeclarationWithComments =- ClassDeclarationWithComments {- -- | The class declaration- classDeclarationWithCommentsBody :: ClassDeclaration,- -- | Optional JSDoc comment- classDeclarationWithCommentsComments :: (Maybe DocumentationComment)}- deriving (Eq, Ord, Read, Show)--_ClassDeclarationWithComments = Core.Name "hydra.typeScript.syntax.ClassDeclarationWithComments"--_ClassDeclarationWithComments_body = Core.Name "body"--_ClassDeclarationWithComments_comments = Core.Name "comments"---- | A TypeScript comment-data Comment =- -- | A single-line comment (// ...)- CommentLine String |- -- | A block comment, delimited by slash-star and star-slash- CommentBlock String |- -- | A documentation comment, delimited by slash-double-star and star-slash (JSDoc)- CommentDocumentation DocumentationComment- deriving (Eq, Ord, Read, Show)--_Comment = Core.Name "hydra.typeScript.syntax.Comment"--_Comment_line = Core.Name "line"--_Comment_block = Core.Name "block"--_Comment_documentation = Core.Name "documentation"---- | A conditional (ternary) expression: test ? consequent : alternate-data ConditionalExpression =- ConditionalExpression {- conditionalExpressionTest :: Expression,- conditionalExpressionConsequent :: Expression,- conditionalExpressionAlternate :: Expression}- deriving (Eq, Ord, Read, Show)--_ConditionalExpression = Core.Name "hydra.typeScript.syntax.ConditionalExpression"--_ConditionalExpression_test = Core.Name "test"--_ConditionalExpression_consequent = Core.Name "consequent"--_ConditionalExpression_alternate = Core.Name "alternate"---- | A continue statement-type ContinueStatement = (Maybe Identifier)--_ContinueStatement = Core.Name "hydra.typeScript.syntax.ContinueStatement"---- | A do-while statement-data DoWhileStatement =- DoWhileStatement {- doWhileStatementBody :: Statement,- doWhileStatementTest :: Expression}- deriving (Eq, Ord, Read, Show)--_DoWhileStatement = Core.Name "hydra.typeScript.syntax.DoWhileStatement"--_DoWhileStatement_body = Core.Name "body"--_DoWhileStatement_test = Core.Name "test"---- | A documentation comment (JSDoc) with structured tags-data DocumentationComment =- DocumentationComment {- -- | The main description- documentationCommentDescription :: String,- -- | Documentation tags (@param, @returns, etc.)- documentationCommentTags :: [DocumentationTag]}- deriving (Eq, Ord, Read, Show)--_DocumentationComment = Core.Name "hydra.typeScript.syntax.DocumentationComment"--_DocumentationComment_description = Core.Name "description"--_DocumentationComment_tags = Core.Name "tags"---- | A documentation tag (@param, @returns, @type, etc.)-data DocumentationTag =- DocumentationTag {- -- | Tag name (param, returns, type, etc.)- documentationTagName :: String,- -- | Optional type expression- documentationTagType :: (Maybe TypeExpression),- -- | Optional parameter name (for @param)- documentationTagParamName :: (Maybe Identifier),- -- | Tag description- documentationTagDescription :: String}- deriving (Eq, Ord, Read, Show)--_DocumentationTag = Core.Name "hydra.typeScript.syntax.DocumentationTag"--_DocumentationTag_name = Core.Name "name"--_DocumentationTag_type = Core.Name "type"--_DocumentationTag_paramName = Core.Name "paramName"--_DocumentationTag_description = Core.Name "description"---- | Export all declaration (export * from ...)-data ExportAllDeclaration =- ExportAllDeclaration {- exportAllDeclarationExported :: (Maybe Identifier),- exportAllDeclarationSource :: StringLiteral}- deriving (Eq, Ord, Read, Show)--_ExportAllDeclaration = Core.Name "hydra.typeScript.syntax.ExportAllDeclaration"--_ExportAllDeclaration_exported = Core.Name "exported"--_ExportAllDeclaration_source = Core.Name "source"---- | An export declaration-data ExportDeclaration =- -- | Named exports (export {x, y as z})- ExportDeclarationNamed NamedExport |- -- | Default export (export default ...)- ExportDeclarationDefault Expression |- -- | Export a declaration (export const x = ...)- ExportDeclarationDeclaration Statement |- -- | Export all (export * from ...)- ExportDeclarationAll ExportAllDeclaration- deriving (Eq, Ord, Read, Show)--_ExportDeclaration = Core.Name "hydra.typeScript.syntax.ExportDeclaration"--_ExportDeclaration_named = Core.Name "named"--_ExportDeclaration_default = Core.Name "default"--_ExportDeclaration_declaration = Core.Name "declaration"--_ExportDeclaration_all = Core.Name "all"---- | An export specifier (x as y)-data ExportSpecifier =- ExportSpecifier {- exportSpecifierLocal :: Identifier,- exportSpecifierExported :: Identifier}- deriving (Eq, Ord, Read, Show)--_ExportSpecifier = Core.Name "hydra.typeScript.syntax.ExportSpecifier"--_ExportSpecifier_local = Core.Name "local"--_ExportSpecifier_exported = Core.Name "exported"---- | A TypeScript expression-data Expression =- -- | A simple identifier- ExpressionIdentifier Identifier |- -- | A literal value- ExpressionLiteral Literal |- -- | An array expression [a, b, c]- ExpressionArray ArrayExpression |- -- | An object expression {a: 1, b: 2}- ExpressionObject ObjectExpression |- -- | A function expression- ExpressionFunction FunctionExpression |- -- | An arrow function expression- ExpressionArrow ArrowFunctionExpression |- -- | A function call expression- ExpressionCall CallExpression |- -- | A member access expression (obj.prop or obj[prop])- ExpressionMember MemberExpression |- -- | A conditional (ternary) expression- ExpressionConditional ConditionalExpression |- -- | A binary operation expression- ExpressionBinary BinaryExpression |- -- | A unary operation expression- ExpressionUnary UnaryExpression |- -- | An assignment expression- ExpressionAssignment AssignmentExpression |- -- | A sequence expression (a, b, c)- ExpressionSequence [Expression] |- -- | The 'this' keyword- ExpressionThis |- -- | A 'new' expression- ExpressionNew CallExpression |- -- | A yield expression- ExpressionYield (Maybe Expression) |- -- | An await expression- ExpressionAwait Expression |- -- | A spread expression (...x)- ExpressionSpread SpreadElement |- -- | A parenthesized expression- ExpressionParenthesized Expression |- -- | A TypeScript type assertion `<expr> as <type>`- ExpressionAsExpression AsExpression- deriving (Eq, Ord, Read, Show)--_Expression = Core.Name "hydra.typeScript.syntax.Expression"--_Expression_identifier = Core.Name "identifier"--_Expression_literal = Core.Name "literal"--_Expression_array = Core.Name "array"--_Expression_object = Core.Name "object"--_Expression_function = Core.Name "function"--_Expression_arrow = Core.Name "arrow"--_Expression_call = Core.Name "call"--_Expression_member = Core.Name "member"--_Expression_conditional = Core.Name "conditional"--_Expression_binary = Core.Name "binary"--_Expression_unary = Core.Name "unary"--_Expression_assignment = Core.Name "assignment"--_Expression_sequence = Core.Name "sequence"--_Expression_this = Core.Name "this"--_Expression_new = Core.Name "new"--_Expression_yield = Core.Name "yield"--_Expression_await = Core.Name "await"--_Expression_spread = Core.Name "spread"--_Expression_parenthesized = Core.Name "parenthesized"--_Expression_asExpression = Core.Name "asExpression"---- | Left-hand side of a for-in or for-of statement-data ForInLeft =- ForInLeftVariable VariableDeclaration |- ForInLeftPattern Pattern- deriving (Eq, Ord, Read, Show)--_ForInLeft = Core.Name "hydra.typeScript.syntax.ForInLeft"--_ForInLeft_variable = Core.Name "variable"--_ForInLeft_pattern = Core.Name "pattern"---- | A for-in statement-data ForInStatement =- ForInStatement {- forInStatementLeft :: ForInLeft,- forInStatementRight :: Expression,- forInStatementBody :: Statement}- deriving (Eq, Ord, Read, Show)--_ForInStatement = Core.Name "hydra.typeScript.syntax.ForInStatement"--_ForInStatement_left = Core.Name "left"--_ForInStatement_right = Core.Name "right"--_ForInStatement_body = Core.Name "body"---- | Initialization clause of a for statement-data ForInit =- ForInitVariable VariableDeclaration |- ForInitExpression Expression- deriving (Eq, Ord, Read, Show)--_ForInit = Core.Name "hydra.typeScript.syntax.ForInit"--_ForInit_variable = Core.Name "variable"--_ForInit_expression = Core.Name "expression"---- | A for-of statement-data ForOfStatement =- ForOfStatement {- -- | Whether this is a for-await-of- forOfStatementAwait :: Bool,- forOfStatementLeft :: ForInLeft,- forOfStatementRight :: Expression,- forOfStatementBody :: Statement}- deriving (Eq, Ord, Read, Show)--_ForOfStatement = Core.Name "hydra.typeScript.syntax.ForOfStatement"--_ForOfStatement_await = Core.Name "await"--_ForOfStatement_left = Core.Name "left"--_ForOfStatement_right = Core.Name "right"--_ForOfStatement_body = Core.Name "body"---- | A for statement-data ForStatement =- ForStatement {- -- | Initialization- forStatementInit :: (Maybe ForInit),- -- | Test condition- forStatementTest :: (Maybe Expression),- -- | Update expression- forStatementUpdate :: (Maybe Expression),- forStatementBody :: Statement}- deriving (Eq, Ord, Read, Show)--_ForStatement = Core.Name "hydra.typeScript.syntax.ForStatement"--_ForStatement_init = Core.Name "init"--_ForStatement_test = Core.Name "test"--_ForStatement_update = Core.Name "update"--_ForStatement_body = Core.Name "body"---- | A function declaration-data FunctionDeclaration =- FunctionDeclaration {- -- | Function name- functionDeclarationId :: Identifier,- -- | Function parameters- functionDeclarationParams :: [Pattern],- -- | Function body- functionDeclarationBody :: BlockStatement,- -- | Whether the function is async- functionDeclarationAsync :: Bool,- -- | Whether the function is a generator- functionDeclarationGenerator :: Bool}- deriving (Eq, Ord, Read, Show)--_FunctionDeclaration = Core.Name "hydra.typeScript.syntax.FunctionDeclaration"--_FunctionDeclaration_id = Core.Name "id"--_FunctionDeclaration_params = Core.Name "params"--_FunctionDeclaration_body = Core.Name "body"--_FunctionDeclaration_async = Core.Name "async"--_FunctionDeclaration_generator = Core.Name "generator"---- | A function declaration with optional JSDoc-data FunctionDeclarationWithComments =- FunctionDeclarationWithComments {- -- | The function declaration- functionDeclarationWithCommentsBody :: FunctionDeclaration,- -- | Optional JSDoc comment- functionDeclarationWithCommentsComments :: (Maybe DocumentationComment)}- deriving (Eq, Ord, Read, Show)--_FunctionDeclarationWithComments = Core.Name "hydra.typeScript.syntax.FunctionDeclarationWithComments"--_FunctionDeclarationWithComments_body = Core.Name "body"--_FunctionDeclarationWithComments_comments = Core.Name "comments"---- | A function expression-data FunctionExpression =- FunctionExpression {- -- | Optional function name- functionExpressionId :: (Maybe Identifier),- -- | Function parameters- functionExpressionParams :: [Pattern],- -- | Function body- functionExpressionBody :: BlockStatement,- -- | Whether the function is async- functionExpressionAsync :: Bool,- -- | Whether the function is a generator- functionExpressionGenerator :: Bool}- deriving (Eq, Ord, Read, Show)--_FunctionExpression = Core.Name "hydra.typeScript.syntax.FunctionExpression"--_FunctionExpression_id = Core.Name "id"--_FunctionExpression_params = Core.Name "params"--_FunctionExpression_body = Core.Name "body"--_FunctionExpression_async = Core.Name "async"--_FunctionExpression_generator = Core.Name "generator"---- | A function type expression-data FunctionTypeExpression =- FunctionTypeExpression {- -- | Type parameters (generics)- functionTypeExpressionTypeParameters :: [TypeParameter],- -- | Parameter types- functionTypeExpressionParameters :: [TypeExpression],- -- | Return type- functionTypeExpressionReturnType :: TypeExpression}- deriving (Eq, Ord, Read, Show)--_FunctionTypeExpression = Core.Name "hydra.typeScript.syntax.FunctionTypeExpression"--_FunctionTypeExpression_typeParameters = Core.Name "typeParameters"--_FunctionTypeExpression_parameters = Core.Name "parameters"--_FunctionTypeExpression_returnType = Core.Name "returnType"---- | A TypeScript identifier (variable, function, class name, etc.)-newtype Identifier =- Identifier {- unIdentifier :: String}- deriving (Eq, Ord, Read, Show)--_Identifier = Core.Name "hydra.typeScript.syntax.Identifier"---- | An if statement-data IfStatement =- IfStatement {- ifStatementTest :: Expression,- ifStatementConsequent :: Statement,- ifStatementAlternate :: (Maybe Statement)}- deriving (Eq, Ord, Read, Show)--_IfStatement = Core.Name "hydra.typeScript.syntax.IfStatement"--_IfStatement_test = Core.Name "test"--_IfStatement_consequent = Core.Name "consequent"--_IfStatement_alternate = Core.Name "alternate"---- | An import clause (named, default, or namespace import)-data ImportClause =- ImportClauseNamed ImportSpecifier |- ImportClauseDefault ImportDefaultSpecifier |- ImportClauseNamespace ImportNamespaceSpecifier- deriving (Eq, Ord, Read, Show)--_ImportClause = Core.Name "hydra.typeScript.syntax.ImportClause"--_ImportClause_named = Core.Name "named"--_ImportClause_default = Core.Name "default"--_ImportClause_namespace = Core.Name "namespace"---- | An import declaration-data ImportDeclaration =- ImportDeclaration {- -- | What to import- importDeclarationSpecifiers :: [ImportClause],- -- | The module to import from- importDeclarationSource :: StringLiteral}- deriving (Eq, Ord, Read, Show)--_ImportDeclaration = Core.Name "hydra.typeScript.syntax.ImportDeclaration"--_ImportDeclaration_specifiers = Core.Name "specifiers"--_ImportDeclaration_source = Core.Name "source"---- | A default import specifier (import x from ...)-newtype ImportDefaultSpecifier =- ImportDefaultSpecifier {- unImportDefaultSpecifier :: Identifier}- deriving (Eq, Ord, Read, Show)--_ImportDefaultSpecifier = Core.Name "hydra.typeScript.syntax.ImportDefaultSpecifier"---- | A namespace import specifier (import * as x from ...)-newtype ImportNamespaceSpecifier =- ImportNamespaceSpecifier {- unImportNamespaceSpecifier :: Identifier}- deriving (Eq, Ord, Read, Show)--_ImportNamespaceSpecifier = Core.Name "hydra.typeScript.syntax.ImportNamespaceSpecifier"---- | A named import specifier (import {x as y} from ...)-data ImportSpecifier =- ImportSpecifier {- importSpecifierImported :: Identifier,- importSpecifierLocal :: Identifier}- deriving (Eq, Ord, Read, Show)--_ImportSpecifier = Core.Name "hydra.typeScript.syntax.ImportSpecifier"--_ImportSpecifier_imported = Core.Name "imported"--_ImportSpecifier_local = Core.Name "local"---- | A TypeScript interface declaration (interface Foo<T> extends Bar { ... })-data InterfaceDeclaration =- InterfaceDeclaration {- -- | Interface name- interfaceDeclarationName :: Identifier,- -- | Generic parameters- interfaceDeclarationTypeParameters :: [TypeParameter],- -- | Interfaces this one extends- interfaceDeclarationExtends :: [TypeExpression],- -- | Property signatures (the interface body)- interfaceDeclarationMembers :: [PropertySignature]}- deriving (Eq, Ord, Read, Show)--_InterfaceDeclaration = Core.Name "hydra.typeScript.syntax.InterfaceDeclaration"--_InterfaceDeclaration_name = Core.Name "name"--_InterfaceDeclaration_typeParameters = Core.Name "typeParameters"--_InterfaceDeclaration_extends = Core.Name "extends"--_InterfaceDeclaration_members = Core.Name "members"---- | An intersection type (A & B & C)-type IntersectionTypeExpression = [TypeExpression]--_IntersectionTypeExpression = Core.Name "hydra.typeScript.syntax.IntersectionTypeExpression"---- | A labeled statement-data LabeledStatement =- LabeledStatement {- labeledStatementLabel :: Identifier,- labeledStatementBody :: Statement}- deriving (Eq, Ord, Read, Show)--_LabeledStatement = Core.Name "hydra.typeScript.syntax.LabeledStatement"--_LabeledStatement_label = Core.Name "label"--_LabeledStatement_body = Core.Name "body"---- | A literal value-data Literal =- -- | A string literal- LiteralString StringLiteral |- -- | A numeric literal- LiteralNumber NumericLiteral |- -- | A boolean literal (true or false)- LiteralBoolean Bool |- -- | The null literal- LiteralNull |- -- | The undefined literal- LiteralUndefined |- -- | A BigInt literal (e.g., 123n)- LiteralBigInt Integer |- -- | A template literal- LiteralTemplate TemplateLiteral- deriving (Eq, Ord, Read, Show)--_Literal = Core.Name "hydra.typeScript.syntax.Literal"--_Literal_string = Core.Name "string"--_Literal_number = Core.Name "number"--_Literal_boolean = Core.Name "boolean"--_Literal_null = Core.Name "null"--_Literal_undefined = Core.Name "undefined"--_Literal_bigInt = Core.Name "bigInt"--_Literal_template = Core.Name "template"---- | A member access expression-data MemberExpression =- MemberExpression {- -- | The object- memberExpressionObject :: Expression,- -- | The property- memberExpressionProperty :: Expression,- -- | Whether using bracket notation (obj[prop])- memberExpressionComputed :: Bool,- -- | Whether using optional chaining (?.)- memberExpressionOptional :: Bool}- deriving (Eq, Ord, Read, Show)--_MemberExpression = Core.Name "hydra.typeScript.syntax.MemberExpression"--_MemberExpression_object = Core.Name "object"--_MemberExpression_property = Core.Name "property"--_MemberExpression_computed = Core.Name "computed"--_MemberExpression_optional = Core.Name "optional"---- | A method definition in a class-data MethodDefinition =- MethodDefinition {- -- | Method name- methodDefinitionKey :: Expression,- -- | Method function- methodDefinitionValue :: FunctionExpression,- -- | Method kind- methodDefinitionKind :: MethodKind,- -- | Whether the key is computed- methodDefinitionComputed :: Bool,- -- | Whether the method is static- methodDefinitionStatic :: Bool}- deriving (Eq, Ord, Read, Show)--_MethodDefinition = Core.Name "hydra.typeScript.syntax.MethodDefinition"--_MethodDefinition_key = Core.Name "key"--_MethodDefinition_value = Core.Name "value"--_MethodDefinition_kind = Core.Name "kind"--_MethodDefinition_computed = Core.Name "computed"--_MethodDefinition_static = Core.Name "static"---- | The kind of a class method-data MethodKind =- MethodKindConstructor |- MethodKindMethod |- MethodKindGet |- MethodKindSet- deriving (Eq, Ord, Read, Show)--_MethodKind = Core.Name "hydra.typeScript.syntax.MethodKind"--_MethodKind_constructor = Core.Name "constructor"--_MethodKind_method = Core.Name "method"--_MethodKind_get = Core.Name "get"--_MethodKind_set = Core.Name "set"---- | A top-level item in a module-data ModuleItem =- ModuleItemStatement Statement |- ModuleItemImport ImportDeclaration |- ModuleItemExport ExportDeclaration |- -- | A top-level interface declaration- ModuleItemInterface InterfaceDeclaration |- -- | A top-level type alias declaration- ModuleItemTypeAlias TypeAliasDeclaration- deriving (Eq, Ord, Read, Show)--_ModuleItem = Core.Name "hydra.typeScript.syntax.ModuleItem"--_ModuleItem_statement = Core.Name "statement"--_ModuleItem_import = Core.Name "import"--_ModuleItem_export = Core.Name "export"--_ModuleItem_interface = Core.Name "interface"--_ModuleItem_typeAlias = Core.Name "typeAlias"---- | A module item with optional documentation-data ModuleItemWithComments =- ModuleItemWithComments {- -- | The module item- moduleItemWithCommentsBody :: ModuleItem,- -- | Optional documentation comment- moduleItemWithCommentsComments :: (Maybe DocumentationComment)}- deriving (Eq, Ord, Read, Show)--_ModuleItemWithComments = Core.Name "hydra.typeScript.syntax.ModuleItemWithComments"--_ModuleItemWithComments_body = Core.Name "body"--_ModuleItemWithComments_comments = Core.Name "comments"---- | Named exports (export {x, y as z})-data NamedExport =- NamedExport {- namedExportSpecifiers :: [ExportSpecifier],- namedExportSource :: (Maybe StringLiteral)}- deriving (Eq, Ord, Read, Show)--_NamedExport = Core.Name "hydra.typeScript.syntax.NamedExport"--_NamedExport_specifiers = Core.Name "specifiers"--_NamedExport_source = Core.Name "source"---- | A numeric literal (integer or floating-point)-data NumericLiteral =- -- | An integer literal- NumericLiteralInteger I.Int64 |- -- | A floating-point literal- NumericLiteralFloat Double- deriving (Eq, Ord, Read, Show)--_NumericLiteral = Core.Name "hydra.typeScript.syntax.NumericLiteral"--_NumericLiteral_integer = Core.Name "integer"--_NumericLiteral_float = Core.Name "float"---- | An object expression {a: 1, b: 2}-type ObjectExpression = [Property]--_ObjectExpression = Core.Name "hydra.typeScript.syntax.ObjectExpression"---- | An object destructuring pattern {a, b: c}-data ObjectPattern =- ObjectPattern {- -- | The property patterns- objectPatternProperties :: [ObjectPatternProperty]}- deriving (Eq, Ord, Read, Show)--_ObjectPattern = Core.Name "hydra.typeScript.syntax.ObjectPattern"--_ObjectPattern_properties = Core.Name "properties"---- | A property in an object pattern-data ObjectPatternProperty =- ObjectPatternPropertyProperty Property |- ObjectPatternPropertyRest RestElement- deriving (Eq, Ord, Read, Show)--_ObjectPatternProperty = Core.Name "hydra.typeScript.syntax.ObjectPatternProperty"--_ObjectPatternProperty_property = Core.Name "property"--_ObjectPatternProperty_rest = Core.Name "rest"---- | An object type with property signatures-type ObjectTypeExpression = [PropertySignature]--_ObjectTypeExpression = Core.Name "hydra.typeScript.syntax.ObjectTypeExpression"---- | A parameterized type (e.g., Array<T>, Map<K, V>)-data ParameterizedTypeExpression =- ParameterizedTypeExpression {- parameterizedTypeExpressionBase :: TypeExpression,- parameterizedTypeExpressionArguments :: [TypeExpression]}- deriving (Eq, Ord, Read, Show)--_ParameterizedTypeExpression = Core.Name "hydra.typeScript.syntax.ParameterizedTypeExpression"--_ParameterizedTypeExpression_base = Core.Name "base"--_ParameterizedTypeExpression_arguments = Core.Name "arguments"---- | A binding pattern (for destructuring)-data Pattern =- -- | A simple identifier binding- PatternIdentifier Identifier |- -- | An object destructuring pattern- PatternObject ObjectPattern |- -- | An array destructuring pattern- PatternArray ArrayPattern |- -- | A pattern with default value- PatternAssignment AssignmentPattern |- -- | A rest element (...x)- PatternRest RestElement |- -- | A pattern with a TypeScript type annotation (`x: T`)- PatternTyped TypedPattern- deriving (Eq, Ord, Read, Show)--_Pattern = Core.Name "hydra.typeScript.syntax.Pattern"--_Pattern_identifier = Core.Name "identifier"--_Pattern_object = Core.Name "object"--_Pattern_array = Core.Name "array"--_Pattern_assignment = Core.Name "assignment"--_Pattern_rest = Core.Name "rest"--_Pattern_typed = Core.Name "typed"---- | A TypeScript program (module)-data Program =- Program {- -- | The module items- programBody :: [ModuleItem],- -- | Whether this is a module or script- programSourceType :: SourceType}- deriving (Eq, Ord, Read, Show)--_Program = Core.Name "hydra.typeScript.syntax.Program"--_Program_body = Core.Name "body"--_Program_sourceType = Core.Name "sourceType"---- | A property in an object expression-data Property =- Property {- -- | Property key (identifier, literal, or computed)- propertyKey :: Expression,- -- | Property value- propertyValue :: Expression,- -- | Property kind (init, get, set)- propertyKind :: PropertyKind,- -- | Whether the key is computed [expr]- propertyComputed :: Bool,- -- | Whether using shorthand syntax {x} for {x: x}- propertyShorthand :: Bool}- deriving (Eq, Ord, Read, Show)--_Property = Core.Name "hydra.typeScript.syntax.Property"--_Property_key = Core.Name "key"--_Property_value = Core.Name "value"--_Property_kind = Core.Name "kind"--_Property_computed = Core.Name "computed"--_Property_shorthand = Core.Name "shorthand"---- | The kind of an object property-data PropertyKind =- -- | A normal property initialization- PropertyKindInit |- -- | A getter- PropertyKindGet |- -- | A setter- PropertyKindSet- deriving (Eq, Ord, Read, Show)--_PropertyKind = Core.Name "hydra.typeScript.syntax.PropertyKind"--_PropertyKind_init = Core.Name "init"--_PropertyKind_get = Core.Name "get"--_PropertyKind_set = Core.Name "set"---- | A property signature in an object type-data PropertySignature =- PropertySignature {- -- | Property name- propertySignatureName :: Identifier,- -- | Property type- propertySignatureType :: TypeExpression,- -- | Whether the property is optional- propertySignatureOptional :: Bool,- -- | Whether the property is readonly- propertySignatureReadonly :: Bool,- -- | Optional JSDoc documentation comment to emit above this property- propertySignatureComments :: (Maybe DocumentationComment)}- deriving (Eq, Ord, Read, Show)--_PropertySignature = Core.Name "hydra.typeScript.syntax.PropertySignature"--_PropertySignature_name = Core.Name "name"--_PropertySignature_type = Core.Name "type"--_PropertySignature_optional = Core.Name "optional"--_PropertySignature_readonly = Core.Name "readonly"--_PropertySignature_comments = Core.Name "comments"---- | A qualified name like 'module.submodule.name'-type QualifiedName = [Identifier]--_QualifiedName = Core.Name "hydra.typeScript.syntax.QualifiedName"---- | A rest element pattern (...x)-newtype RestElement =- RestElement {- unRestElement :: Pattern}- deriving (Eq, Ord, Read, Show)--_RestElement = Core.Name "hydra.typeScript.syntax.RestElement"---- | A return statement-type ReturnStatement = (Maybe Expression)--_ReturnStatement = Core.Name "hydra.typeScript.syntax.ReturnStatement"---- | Whether the program is a module or script-data SourceType =- SourceTypeModule |- SourceTypeScript- deriving (Eq, Ord, Read, Show)--_SourceType = Core.Name "hydra.typeScript.syntax.SourceType"--_SourceType_module = Core.Name "module"--_SourceType_script = Core.Name "script"---- | A spread element (...x)-newtype SpreadElement =- SpreadElement {- unSpreadElement :: Expression}- deriving (Eq, Ord, Read, Show)--_SpreadElement = Core.Name "hydra.typeScript.syntax.SpreadElement"---- | A TypeScript statement-data Statement =- -- | An expression statement- StatementExpression Expression |- -- | A block statement- StatementBlock BlockStatement |- -- | An empty statement (;)- StatementEmpty |- -- | A debugger statement- StatementDebugger |- -- | A return statement- StatementReturn ReturnStatement |- -- | A break statement- StatementBreak BreakStatement |- -- | A continue statement- StatementContinue ContinueStatement |- -- | An if statement- StatementIf IfStatement |- -- | A switch statement- StatementSwitch SwitchStatement |- -- | A throw statement- StatementThrow ThrowStatement |- -- | A try statement- StatementTry TryStatement |- -- | A while statement- StatementWhile WhileStatement |- -- | A do-while statement- StatementDoWhile DoWhileStatement |- -- | A for statement- StatementFor ForStatement |- -- | A for-in statement- StatementForIn ForInStatement |- -- | A for-of statement- StatementForOf ForOfStatement |- -- | A variable declaration- StatementVariableDeclaration VariableDeclaration |- -- | A function declaration- StatementFunctionDeclaration FunctionDeclaration |- -- | A class declaration- StatementClassDeclaration ClassDeclaration |- -- | A labeled statement- StatementLabeled LabeledStatement- deriving (Eq, Ord, Read, Show)--_Statement = Core.Name "hydra.typeScript.syntax.Statement"--_Statement_expression = Core.Name "expression"--_Statement_block = Core.Name "block"--_Statement_empty = Core.Name "empty"--_Statement_debugger = Core.Name "debugger"--_Statement_return = Core.Name "return"--_Statement_break = Core.Name "break"--_Statement_continue = Core.Name "continue"--_Statement_if = Core.Name "if"--_Statement_switch = Core.Name "switch"--_Statement_throw = Core.Name "throw"--_Statement_try = Core.Name "try"--_Statement_while = Core.Name "while"--_Statement_doWhile = Core.Name "doWhile"--_Statement_for = Core.Name "for"--_Statement_forIn = Core.Name "forIn"--_Statement_forOf = Core.Name "forOf"--_Statement_variableDeclaration = Core.Name "variableDeclaration"--_Statement_functionDeclaration = Core.Name "functionDeclaration"--_Statement_classDeclaration = Core.Name "classDeclaration"--_Statement_labeled = Core.Name "labeled"---- | A statement with optional documentation-data StatementWithComments =- StatementWithComments {- -- | The statement- statementWithCommentsBody :: Statement,- -- | Optional documentation comment- statementWithCommentsComments :: (Maybe DocumentationComment)}- deriving (Eq, Ord, Read, Show)--_StatementWithComments = Core.Name "hydra.typeScript.syntax.StatementWithComments"--_StatementWithComments_body = Core.Name "body"--_StatementWithComments_comments = Core.Name "comments"---- | A string literal with quote style-data StringLiteral =- StringLiteral {- -- | The string value- stringLiteralValue :: String,- -- | Whether to use single quotes (true) or double quotes (false)- stringLiteralSingleQuote :: Bool}- deriving (Eq, Ord, Read, Show)--_StringLiteral = Core.Name "hydra.typeScript.syntax.StringLiteral"--_StringLiteral_value = Core.Name "value"--_StringLiteral_singleQuote = Core.Name "singleQuote"---- | A case clause in a switch statement-data SwitchCase =- SwitchCase {- -- | The test expression (Nothing for default)- switchCaseTest :: (Maybe Expression),- -- | The statements to execute- switchCaseConsequent :: [Statement]}- deriving (Eq, Ord, Read, Show)--_SwitchCase = Core.Name "hydra.typeScript.syntax.SwitchCase"--_SwitchCase_test = Core.Name "test"--_SwitchCase_consequent = Core.Name "consequent"---- | A switch statement-data SwitchStatement =- SwitchStatement {- switchStatementDiscriminant :: Expression,- switchStatementCases :: [SwitchCase]}- deriving (Eq, Ord, Read, Show)--_SwitchStatement = Core.Name "hydra.typeScript.syntax.SwitchStatement"--_SwitchStatement_discriminant = Core.Name "discriminant"--_SwitchStatement_cases = Core.Name "cases"---- | A static part of a template literal-data TemplateElement =- TemplateElement {- -- | The raw string value- templateElementValue :: String,- -- | Whether this is the last element- templateElementTail :: Bool}- deriving (Eq, Ord, Read, Show)--_TemplateElement = Core.Name "hydra.typeScript.syntax.TemplateElement"--_TemplateElement_value = Core.Name "value"--_TemplateElement_tail = Core.Name "tail"---- | A template literal (backtick string with interpolations)-data TemplateLiteral =- TemplateLiteral {- -- | The static string parts- templateLiteralQuasis :: [TemplateElement],- -- | The interpolated expressions- templateLiteralExpressions :: [Expression]}- deriving (Eq, Ord, Read, Show)--_TemplateLiteral = Core.Name "hydra.typeScript.syntax.TemplateLiteral"--_TemplateLiteral_quasis = Core.Name "quasis"--_TemplateLiteral_expressions = Core.Name "expressions"---- | A throw statement-newtype ThrowStatement =- ThrowStatement {- unThrowStatement :: Expression}- deriving (Eq, Ord, Read, Show)--_ThrowStatement = Core.Name "hydra.typeScript.syntax.ThrowStatement"---- | A try statement-data TryStatement =- TryStatement {- tryStatementBlock :: BlockStatement,- tryStatementHandler :: (Maybe CatchClause),- tryStatementFinalizer :: (Maybe BlockStatement)}- deriving (Eq, Ord, Read, Show)--_TryStatement = Core.Name "hydra.typeScript.syntax.TryStatement"--_TryStatement_block = Core.Name "block"--_TryStatement_handler = Core.Name "handler"--_TryStatement_finalizer = Core.Name "finalizer"---- | A tuple type ([A, B] or readonly [A, B])-type TupleTypeExpression = [TypeExpression]--_TupleTypeExpression = Core.Name "hydra.typeScript.syntax.TupleTypeExpression"---- | A TypeScript type alias declaration (type Foo<T> = ...)-data TypeAliasDeclaration =- TypeAliasDeclaration {- -- | Alias name- typeAliasDeclarationName :: Identifier,- -- | Generic parameters- typeAliasDeclarationTypeParameters :: [TypeParameter],- -- | The right-hand-side type- typeAliasDeclarationType :: TypeExpression}- deriving (Eq, Ord, Read, Show)--_TypeAliasDeclaration = Core.Name "hydra.typeScript.syntax.TypeAliasDeclaration"--_TypeAliasDeclaration_name = Core.Name "name"--_TypeAliasDeclaration_typeParameters = Core.Name "typeParameters"--_TypeAliasDeclaration_type = Core.Name "type"---- | A type annotation (for JSDoc comments or TypeScript)-newtype TypeAnnotation =- TypeAnnotation {- unTypeAnnotation :: TypeExpression}- deriving (Eq, Ord, Read, Show)--_TypeAnnotation = Core.Name "hydra.typeScript.syntax.TypeAnnotation"---- | A type expression-data TypeExpression =- -- | A named type (e.g., 'string', 'number', 'MyClass')- TypeExpressionIdentifier Identifier |- -- | A literal type (e.g., 'hello', 42)- TypeExpressionLiteral Literal |- -- | An array type- TypeExpressionArray ArrayTypeExpression |- -- | A function type- TypeExpressionFunction FunctionTypeExpression |- -- | An object type- TypeExpressionObject ObjectTypeExpression |- -- | A tuple type (readonly [A, B, C])- TypeExpressionTuple TupleTypeExpression |- -- | A union type (A | B)- TypeExpressionUnion UnionTypeExpression |- -- | An intersection type (A & B)- TypeExpressionIntersection IntersectionTypeExpression |- -- | A parameterized type (e.g., Array<T>, Map<K, V>)- TypeExpressionParameterized ParameterizedTypeExpression |- -- | An optional type (T | undefined or T?)- TypeExpressionOptional TypeExpression |- -- | A readonly modifier (readonly T[], readonly [A, B])- TypeExpressionReadonly TypeExpression |- -- | The 'any' type- TypeExpressionAny |- -- | The 'unknown' type- TypeExpressionUnknown |- -- | The 'void' type- TypeExpressionVoid |- -- | The 'never' type- TypeExpressionNever- deriving (Eq, Ord, Read, Show)--_TypeExpression = Core.Name "hydra.typeScript.syntax.TypeExpression"--_TypeExpression_identifier = Core.Name "identifier"--_TypeExpression_literal = Core.Name "literal"--_TypeExpression_array = Core.Name "array"--_TypeExpression_function = Core.Name "function"--_TypeExpression_object = Core.Name "object"--_TypeExpression_tuple = Core.Name "tuple"--_TypeExpression_union = Core.Name "union"--_TypeExpression_intersection = Core.Name "intersection"--_TypeExpression_parameterized = Core.Name "parameterized"--_TypeExpression_optional = Core.Name "optional"--_TypeExpression_readonly = Core.Name "readonly"--_TypeExpression_any = Core.Name "any"--_TypeExpression_unknown = Core.Name "unknown"--_TypeExpression_void = Core.Name "void"--_TypeExpression_never = Core.Name "never"---- | A type parameter (generic)-data TypeParameter =- TypeParameter {- -- | Parameter name- typeParameterName :: Identifier,- -- | Optional constraint (extends clause)- typeParameterConstraint :: (Maybe TypeExpression),- -- | Optional default type- typeParameterDefault :: (Maybe TypeExpression)}- deriving (Eq, Ord, Read, Show)--_TypeParameter = Core.Name "hydra.typeScript.syntax.TypeParameter"--_TypeParameter_name = Core.Name "name"--_TypeParameter_constraint = Core.Name "constraint"--_TypeParameter_default = Core.Name "default"---- | A pattern with a TypeScript type annotation (`x: T`)-data TypedPattern =- TypedPattern {- -- | The underlying binding pattern- typedPatternPattern :: Pattern,- -- | The TypeScript type annotation- typedPatternType :: TypeExpression}- deriving (Eq, Ord, Read, Show)--_TypedPattern = Core.Name "hydra.typeScript.syntax.TypedPattern"--_TypedPattern_pattern = Core.Name "pattern"--_TypedPattern_type = Core.Name "type"---- | A unary operation expression-data UnaryExpression =- UnaryExpression {- unaryExpressionOperator :: UnaryOperator,- unaryExpressionArgument :: Expression,- -- | Whether the operator is prefix (true) or postfix (false)- unaryExpressionPrefix :: Bool}- deriving (Eq, Ord, Read, Show)--_UnaryExpression = Core.Name "hydra.typeScript.syntax.UnaryExpression"--_UnaryExpression_operator = Core.Name "operator"--_UnaryExpression_argument = Core.Name "argument"--_UnaryExpression_prefix = Core.Name "prefix"---- | A unary operator-data UnaryOperator =- -- | -- UnaryOperatorNegate |- -- | +- UnaryOperatorPlus |- -- | !- UnaryOperatorNot |- -- | ~- UnaryOperatorBitwiseNot |- -- | typeof- UnaryOperatorTypeof |- -- | void- UnaryOperatorVoid |- -- | delete- UnaryOperatorDelete |- -- | ++- UnaryOperatorIncrement |- -- | --- UnaryOperatorDecrement- deriving (Eq, Ord, Read, Show)--_UnaryOperator = Core.Name "hydra.typeScript.syntax.UnaryOperator"--_UnaryOperator_negate = Core.Name "negate"--_UnaryOperator_plus = Core.Name "plus"--_UnaryOperator_not = Core.Name "not"--_UnaryOperator_bitwiseNot = Core.Name "bitwiseNot"--_UnaryOperator_typeof = Core.Name "typeof"--_UnaryOperator_void = Core.Name "void"--_UnaryOperator_delete = Core.Name "delete"--_UnaryOperator_increment = Core.Name "increment"--_UnaryOperator_decrement = Core.Name "decrement"---- | A union type (A | B | C)-type UnionTypeExpression = [TypeExpression]--_UnionTypeExpression = Core.Name "hydra.typeScript.syntax.UnionTypeExpression"---- | A variable declaration (var, let, const)-data VariableDeclaration =- VariableDeclaration {- variableDeclarationKind :: VariableKind,- variableDeclarationDeclarations :: [VariableDeclarator]}- deriving (Eq, Ord, Read, Show)--_VariableDeclaration = Core.Name "hydra.typeScript.syntax.VariableDeclaration"--_VariableDeclaration_kind = Core.Name "kind"--_VariableDeclaration_declarations = Core.Name "declarations"---- | A variable declarator (id = init)-data VariableDeclarator =- VariableDeclarator {- variableDeclaratorId :: Pattern,- variableDeclaratorInit :: (Maybe Expression)}- deriving (Eq, Ord, Read, Show)--_VariableDeclarator = Core.Name "hydra.typeScript.syntax.VariableDeclarator"--_VariableDeclarator_id = Core.Name "id"--_VariableDeclarator_init = Core.Name "init"---- | The kind of variable declaration-data VariableKind =- VariableKindVar |- VariableKindLet |- VariableKindConst- deriving (Eq, Ord, Read, Show)--_VariableKind = Core.Name "hydra.typeScript.syntax.VariableKind"--_VariableKind_var = Core.Name "var"--_VariableKind_let = Core.Name "let"--_VariableKind_const = Core.Name "const"---- | A while statement-data WhileStatement =- WhileStatement {- whileStatementTest :: Expression,- whileStatementBody :: Statement}- deriving (Eq, Ord, Read, Show)--_WhileStatement = Core.Name "hydra.typeScript.syntax.WhileStatement"--_WhileStatement_test = Core.Name "test"--_WhileStatement_body = Core.Name "body"
+ src/main/haskell/Hydra/Typescript/Coder.hs view
@@ -0,0 +1,1232 @@+-- Note: this is an automatically generated file. Do not edit.++-- | TypeScript code generator: emits TypeScript type declarations from Hydra modules++module Hydra.Typescript.Coder where++import qualified Hydra.Core.Analysis as Analysis+import qualified Hydra.Core.Annotations as Annotations+import qualified Hydra.Core.Arity as Arity+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Environment as Environment+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Print.Docs as PrintDocs+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Rewriting as Rewriting+import qualified Hydra.Core.Scoping as Scoping+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.Sorting as Sorting+import qualified Hydra.Core.Strip as Strip+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variables as Variables+import qualified Hydra.Core.Variants as Variants+import qualified Hydra.Typescript.Language as Language+import qualified Hydra.Typescript.Serde as Serde+import qualified Hydra.Typescript.Syntax as Syntax+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Map as M+import qualified Data.Set as S++-- | Analyze a term as a TypeScript function, using the Graph as the analysis environment+analyzeTypeScriptFunction :: Typing.InferenceContext -> Graph.Graph -> Model.Term -> Either t0 (Typing.FunctionStructure Graph.Graph)+analyzeTypeScriptFunction cx g term = Analysis.analyzeFunctionTerm cx tsEnvGetGraph tsEnvSetGraph g term++-- | Collect the bound parameter names from a chain of nested foralls, in outer-to-inner order; stops at the first non-forall type+collectForallParams :: Model.Type -> [Model.Name]+collectForallParams t =++ let dt = Strip.deannotateType t+ in case dt of+ Model.TypeForall v0 -> Lists.cons (Model.forallTypeParameter v0) (collectForallParams (Model.forallTypeBody v0))+ _ -> []++-- | Collect the names of every type referenced in a type tree that belongs to a different namespace than the current module, for computing the imports needed at the top of the emitted .ts file+collectImports :: Packaging.ModuleName -> Model.Type -> S.Set Model.Name+collectImports currentNs t =++ let vars = Variables.freeVariablesInType t+ in (filterNonLocalNames currentNs vars)++-- | Collect type imports referenced inside a term tree (lambda bodies, type applications, let-binding schemes), supplementing the top-level typeScheme walk+collectInnerTypeImports :: Packaging.ModuleName -> Model.Term -> S.Set Model.Name+collectInnerTypeImports currentNs term =++ let subs = Rewriting.subterms term+ ownVars =+ case (Strip.deannotateTerm term) of+ Model.TermLambda v0 -> Optionals.match (Model.lambdaDomain v0) Sets.empty (\d -> Variables.freeVariablesInType d)+ Model.TermTypeApplication v0 -> Variables.freeVariablesInType (Model.typeApplicationTermType v0)+ Model.TermTypeLambda _ -> Sets.empty+ Model.TermLet v0 -> Lists.foldl (\acc -> \b -> Optionals.match (Model.bindingTypeScheme b) acc (\ts -> Sets.union acc (Variables.freeVariablesInType (Model.typeSchemeBody ts)))) Sets.empty (Model.letBindings v0)+ _ -> Sets.empty+ childVars = Lists.foldl (\acc -> \s -> Sets.union acc (collectInnerTypeImports currentNs s)) Sets.empty subs+ in (filterNonLocalNames currentNs (Sets.union ownVars childVars))++-- | Like collectImports but walks a Term, gathering free term-level variables that resolve to a different module+collectTermImports :: Packaging.ModuleName -> Model.Term -> S.Set Model.Name+collectTermImports currentNs t =++ let vars = Variables.freeVariablesInTerm t+ in (filterNonLocalNames currentNs vars)++-- | Decode a canonical decimal digit string into a ((sign, digits), scale) nested pair+decimalDigitsAndScale :: String -> ((String, String), Int)+decimalDigitsAndScale s =++ let eParts = Strings.splitOn "e" s+ mantissa = Optionals.withDefault "" (Lists.head eParts)+ expText = Optionals.withDefault "" (Lists.head (Lists.drop 1 eParts))+ expTextUnplussed =+ Logic.ifElse (Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 expText)) 43) (Strings.fromList (Lists.drop 1 (Strings.toList expText))) expText+ expPart = Optionals.withDefault 0 (Literals.parseInt32 expTextUnplussed)+ isNeg = Equality.equal (Optionals.withDefault 0 (Strings.charAt 0 mantissa)) 45+ unsigned = Logic.ifElse isNeg (Strings.fromList (Lists.drop 1 (Strings.toList mantissa))) mantissa+ dotParts = Strings.splitOn "." unsigned+ intPart = Optionals.withDefault "" (Lists.head dotParts)+ fracPart = Optionals.withDefault "" (Lists.head (Lists.drop 1 dotParts))+ rawDigits = Strings.concat2 intPart fracPart+ rawScale = Math.sub (Strings.length fracPart) expPart+ sign = Logic.ifElse isNeg "-" ""+ in (Logic.ifElse (Ordering.lt rawScale 0) ((sign, (Strings.concat2 rawDigits (Strings.fromList (Lists.replicate (Math.negate rawScale) 48)))), 0) ((sign, rawDigits), rawScale))++-- | Find the free variables of a term that are referenced eagerly, i.e. outside of any nested lambda body; used to break false dependency cycles caused by DSL-level thunks such as hydra.core.parsers.lazy+eagerFreeVariablesInTerm :: Model.Term -> S.Set Model.Name+eagerFreeVariablesInTerm term =++ let dfltVars =+ \_ -> Lists.foldl (\s -> \t -> Sets.union s (eagerFreeVariablesInTerm t)) Sets.empty (Rewriting.subterms term)+ in case term of+ Model.TermLambda _ -> Sets.empty+ Model.TermLet v0 -> Sets.difference (dfltVars ()) (Sets.fromList (Lists.map (\b -> Model.bindingName b) (Model.letBindings v0)))+ Model.TermVariable v0 -> Sets.singleton v0+ _ -> dfltVars ()++-- | Encode a let-binding as a TS statement inside an enclosing function body, hoisting lambda-valued bindings as nested function declarations+encodeBindingAsStatement :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Model.Binding -> Syntax.Statement+encodeBindingAsStatement cx g currentNs b =++ let bname = Model.bindingName b+ lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf bname)+ bterm = Model.bindingTerm b+ dterm = Strip.deannotateTerm bterm+ in case dterm of+ Model.TermLambda _ ->+ let innerFunDecl =+ functionDeclarationFromTerm cx g currentNs lname bterm (Optionals.bind (Model.bindingTypeScheme b) (\ts -> Just (Model.typeSchemeBody ts)))+ in (Syntax.StatementFunctionDeclaration innerFunDecl)+ _ ->+ let expr = encodeTerm cx g currentNs bterm+ declarator =+ Syntax.VariableDeclarator {+ Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),+ Syntax.variableDeclaratorInit = (Just expr)}+ varDecl =+ Syntax.VariableDeclaration {+ Syntax.variableDeclarationKind = Syntax.VariableKindConst,+ Syntax.variableDeclarationDeclarations = [+ declarator]}+ in (Syntax.StatementVariableDeclaration varDecl)++-- | Emit a fully-applied primitive call with selected arguments wrapped in thunks, per a parallel list of laziness flags+encodeLazyCall :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Model.Term -> [Model.Term] -> [Bool] -> Syntax.Expression+encodeLazyCall cx g currentNs headTerm args lazyFlags =++ let headExpr = encodeTerm cx g currentNs headTerm+ paired = Lists.zip args lazyFlags+ renderArg =+ \p ->+ let argTerm = Pairs.first p+ isLazy = Pairs.second p+ expr = encodeTerm cx g currentNs argTerm+ in (Logic.ifElse isLazy (tsArrow [] expr) expr)+ argExprs = Lists.map renderArg paired+ in (tsCall headExpr argExprs)++-- | Render a Hydra literal as a TypeScript expression+encodeLiteral :: Model.Literal -> Syntax.Expression+encodeLiteral lit =++ let litExpr = \lit -> Syntax.ExpressionLiteral lit+ numLit = \i -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralInteger i))+ floatLit = \f -> litExpr (Syntax.LiteralNumber (Syntax.NumericLiteralFloat f))+ strLit =+ \s -> litExpr (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = s,+ Syntax.stringLiteralSingleQuote = False}))+ boolLit = \b -> litExpr (Syntax.LiteralBoolean b)+ bigIntCall = \txt -> tsCall (tsExprIdent "BigInt") [+ strLit txt]+ in case lit of+ Model.LiteralBinary v0 -> strLit (Literals.binaryToBase64 v0)+ Model.LiteralBoolean v0 -> boolLit v0+ Model.LiteralDecimal v0 ->+ let parts = decimalDigitsAndScale (Literals.printDecimal v0)+ signDigits = Pairs.first parts+ scale = Pairs.second parts+ coefficientText = Strings.concat2 (Pairs.first signDigits) (Pairs.second signDigits)+ in (tsObject [+ ("coefficient", (bigIntCall coefficientText)),+ ("scale", (numLit (Literals.bigintToInt64 (Literals.int32ToBigint scale))))])+ Model.LiteralString v0 -> strLit v0+ Model.LiteralInteger v0 -> case v0 of+ Model.IntegerValueBigint v1 -> bigIntCall (Literals.printBigint v1)+ Model.IntegerValueInt8 v1 -> numLit (Literals.bigintToInt64 (Literals.int8ToBigint v1))+ Model.IntegerValueInt16 v1 -> numLit (Literals.bigintToInt64 (Literals.int16ToBigint v1))+ Model.IntegerValueInt32 v1 -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint v1))+ Model.IntegerValueInt64 v1 -> bigIntCall (Literals.printInt64 v1)+ Model.IntegerValueUint8 v1 -> numLit (Literals.bigintToInt64 (Literals.uint8ToBigint v1))+ Model.IntegerValueUint16 v1 -> numLit (Literals.bigintToInt64 (Literals.uint16ToBigint v1))+ Model.IntegerValueUint32 v1 -> numLit (Literals.bigintToInt64 (Literals.uint32ToBigint v1))+ Model.IntegerValueUint64 v1 -> bigIntCall (Literals.printUint64 v1)+ _ -> numLit (Literals.bigintToInt64 (Literals.int32ToBigint 0))+ Model.LiteralFloat v0 -> case v0 of+ Model.FloatValueFloat32 v1 -> floatLit (Literals.float32ToFloat64 v1)+ Model.FloatValueFloat64 v1 -> floatLit v1+ _ -> floatLit 0.0+ _ -> litExpr Syntax.LiteralNull++-- | Map a Hydra literal type to a TypeScript type expression+encodeLiteralType :: Model.LiteralType -> Syntax.TypeExpression+encodeLiteralType lt =+ case lt of+ Model.LiteralTypeBinary -> tsParamApp1 "ReadonlyArray" (tsNamedType "number")+ Model.LiteralTypeBoolean -> tsNamedType "boolean"+ Model.LiteralTypeDecimal -> Syntax.TypeExpressionObject [+ tsPropSig "coefficient" False (tsNamedType "bigint"),+ (tsPropSig "scale" False (tsNamedType "number"))]+ Model.LiteralTypeFloat v0 -> case v0 of+ Model.FloatTypeFloat32 -> tsNamedType "number"+ Model.FloatTypeFloat64 -> tsNamedType "number"+ Model.LiteralTypeInteger v0 -> case v0 of+ Model.IntegerTypeBigint -> tsNamedType "bigint"+ Model.IntegerTypeInt8 -> tsNamedType "number"+ Model.IntegerTypeInt16 -> tsNamedType "number"+ Model.IntegerTypeInt32 -> tsNamedType "number"+ Model.IntegerTypeInt64 -> tsNamedType "bigint"+ Model.IntegerTypeUint8 -> tsNamedType "number"+ Model.IntegerTypeUint16 -> tsNamedType "number"+ Model.IntegerTypeUint32 -> tsNamedType "number"+ Model.IntegerTypeUint64 -> tsNamedType "bigint"+ Model.LiteralTypeString -> tsNamedType "string"++-- | Build a TS function parameter as a pattern, typed unless the domain is the analyze pass's untyped-variable sentinel+encodeParam :: t0 -> t1 -> Packaging.ModuleName -> Model.Name -> Model.Type -> Syntax.Pattern+encodeParam cx g currentNs pname dom =++ let nstr = sanitizeParamName pname+ in case (Strip.deannotateType dom) of+ Model.TypeVariable _ -> tsTypedIdent nstr Syntax.TypeExpressionAny+ _ -> tsTypedIdent nstr (encodeTypeOrAny cx g currentNs dom)++-- | Render a Hydra term as a TypeScript expression+encodeTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Model.Term -> Syntax.Expression+encodeTerm cx g currentNs term =+ case term of+ Model.TermAnnotated v0 -> encodeTerm cx g currentNs (Model.annotatedTermBody v0)+ Model.TermLiteral v0 -> encodeLiteral v0+ Model.TermVariable v0 ->+ let local = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf v0)+ varExpr =+ Optionals.match (Names.moduleNameOf v0) (tsExprIdent local) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (tsExprIdent local) (+ let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))+ alias = Strings.concat2 "$mod_" (Strings.join "_" nsSegs)+ in (tsMember (tsExprIdent alias) local)))+ in (Optionals.match (Lexical.lookupPrimitive g v0) varExpr (\prim ->+ let isZeroArityEffect =+ Logic.and (Equality.equal (Arity.primitiveArity prim) 0) (Logic.not (Packaging.primitiveDefinitionIsPure (Graph.primitiveDefinition prim)))+ in (Logic.ifElse isZeroArityEffect (tsCall varExpr []) varExpr)))+ Model.TermLambda v0 ->+ let lamTerm = Model.TermLambda v0+ fsLE = analyzeTypeScriptFunction cx g lamTerm+ fsL =+ Eithers.either (\_err -> Typing.FunctionStructure {+ Typing.functionStructureTypeParams = [],+ Typing.functionStructureParams = [],+ Typing.functionStructureBindings = [],+ Typing.functionStructureBody = lamTerm,+ Typing.functionStructureDomains = [],+ Typing.functionStructureCodomain = Nothing,+ Typing.functionStructureEnvironment = g}) (\ok -> ok) fsLE+ fsLParams = Typing.functionStructureParams fsL+ fsLDoms = Typing.functionStructureDomains fsL+ fsLBindings = Typing.functionStructureBindings fsL+ fsLBody = Typing.functionStructureBody fsL+ fsLEnv = Typing.functionStructureEnvironment fsL+ innerBody =+ Logic.ifElse (Lists.isEmpty fsLBindings) fsLBody (Model.TermLet (Model.Let {+ Model.letBindings = fsLBindings,+ Model.letBody = fsLBody}))+ paramAcc =+ Lists.foldl (\acc -> \pn ->+ let idx = Pairs.first acc+ pats = Pairs.second acc+ raw = Names.localNameOf pn+ uniq = Logic.ifElse (Equality.equal raw "_") (Strings.concat2 "_" (Literals.printInt32 idx)) raw+ pat = tsTypedIdent (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords uniq) Syntax.TypeExpressionAny+ in (Math.add idx 1, (Lists.concat2 pats [+ pat]))) (0, []) fsLParams+ paramPatterns = Pairs.second paramAcc+ bExpr = encodeTerm cx fsLEnv currentNs innerBody+ in (tsArrowTyped paramPatterns bExpr)+ Model.TermApplication v0 ->+ let asTerm = Model.TermApplication v0+ flat = flattenApplication asTerm+ headTerm = Pairs.first flat+ args = Pairs.second flat+ mName = termHeadVariable headTerm+ argc = Lists.length args+ lazyMaybe =+ Optionals.match mName Nothing (\n ->+ let lazyFlags = lazyFlagsForPrimitive g n+ anyLazy = Lists.foldl (\b -> \f -> Logic.or b f) False lazyFlags+ in (Logic.ifElse (Logic.and anyLazy (Equality.equal argc (Lists.length lazyFlags))) (Just (encodeLazyCall cx g currentNs headTerm args lazyFlags)) Nothing))+ in (Optionals.match lazyMaybe (+ let dHead = Strip.deannotateAndDetypeTerm headTerm+ encArgs = Lists.map (encodeTerm cx g currentNs) args+ in case dHead of+ Model.TermProject v1 -> Logic.ifElse (Lists.isEmpty encArgs) (+ let headExpr = encodeTerm cx g currentNs headTerm+ in headExpr) (+ let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Model.unName (Model.projectionFieldName v1))+ firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)+ restA = Lists.drop 1 encArgs+ fieldExpr = tsMember firstA fname+ in (Logic.ifElse (Lists.isEmpty restA) fieldExpr (tsCall fieldExpr restA)))+ Model.TermUnwrap _ -> Logic.ifElse (Lists.isEmpty encArgs) (+ let headExpr = encodeTerm cx g currentNs headTerm+ in headExpr) (+ let firstA = Optionals.withDefault (tsExprIdent "undefined") (Lists.head encArgs)+ restA = Lists.drop 1 encArgs+ valueExpr = tsMember firstA "value"+ in (Logic.ifElse (Lists.isEmpty restA) valueExpr (tsCall valueExpr restA)))+ _ ->+ let headExpr = encodeTerm cx g currentNs headTerm+ in (tsCall headExpr encArgs)) (\e -> e))+ Model.TermUnit -> tsUndefined+ Model.TermList v0 -> tsArray (Lists.map (encodeTerm cx g currentNs) v0)+ Model.TermSet v0 -> tsNew (tsExprIdent "Set") [+ tsArray (Lists.map (encodeTerm cx g currentNs) (Sets.toList v0))]+ Model.TermMap v0 -> tsNew (tsExprIdent "Map") [+ tsArray (Lists.map (\entry -> tsArray [+ encodeTerm cx g currentNs (Pairs.first entry),+ (encodeTerm cx g currentNs (Pairs.second entry))]) (Maps.toList v0))]+ Model.TermPair v0 -> tsAsAny (tsArray [+ encodeTerm cx g currentNs (Pairs.first v0),+ (encodeTerm cx g currentNs (Pairs.second v0))])+ Model.TermOptional v0 -> Optionals.match v0 (tsAsAny (tsObject [+ ("tag", (tsExprStr "none"))])) (\v -> tsAsAny (tsObject [+ ("tag", (tsExprStr "given")),+ ("value", (encodeTerm cx g currentNs v))]))+ Model.TermRecord v0 ->+ let fields = Model.recordFields v0+ in (tsObject (Lists.map (\f -> (+ Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Model.unName (Model.fieldName f)),+ (encodeTerm cx g currentNs (Model.fieldTerm f)))) fields))+ Model.TermInject v0 ->+ let fname = Model.unName (Model.fieldName (Model.injectionField v0))+ fterm = Model.fieldTerm (Model.injectionField v0)+ isUnit =+ case (Strip.deannotateTerm fterm) of+ Model.TermUnit -> True+ _ -> False+ in (Logic.ifElse isUnit (tsAsAny (tsObject [+ ("tag", (tsExprStr fname))])) (tsAsAny (tsObject [+ ("tag", (tsExprStr fname)),+ ("value", (encodeTerm cx g currentNs fterm))])))+ Model.TermWrap v0 -> tsObject [+ ("value", (encodeTerm cx g currentNs (Model.wrappedTermBody v0)))]+ Model.TermLet v0 ->+ let lt2 = thunkLazyLet v0+ bindings = sortBindingsTopologically (Model.letBindings lt2)+ body = Model.letBody lt2+ encodedBody = encodeTerm cx g currentNs body+ bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx g currentNs b) bindings+ returnStmt = Syntax.StatementReturn (Just encodedBody)+ stmts = Lists.concat2 bindingStmts [+ returnStmt]+ iifeArrow =+ Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+ Syntax.arrowFunctionExpressionParams = [],+ Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock stmts),+ Syntax.arrowFunctionExpressionAsync = False})+ in (tsCall iifeArrow [])+ Model.TermTypeApplication v0 -> encodeTerm cx g currentNs (Model.typeApplicationTermBody v0)+ Model.TermTypeLambda v0 -> encodeTerm cx g currentNs (Model.typeLambdaBody v0)+ Model.TermProject v0 ->+ let fname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Model.unName (Model.projectionFieldName v0))+ in (tsArrowTyped [+ tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") fname))+ Model.TermUnwrap _ -> tsArrowTyped [+ tsTypedIdent "x" Syntax.TypeExpressionAny] (tsMember (tsExprIdent "x") "value")+ Model.TermCases v0 ->+ let armFields = Model.caseStatementCases v0+ defaultMaybe = Model.caseStatementDefault v0+ uVar = "u"+ uExpr = tsAsAny (tsExprIdent uVar)+ uTag = tsMember uExpr "tag"+ uValue = tsMember uExpr "value"+ armCases =+ Lists.map (\f ->+ let fname = Model.unName (Model.caseAlternativeName f)+ armExpr = encodeTerm cx g currentNs (Model.caseAlternativeHandler f)+ callExpr = tsCall armExpr [+ uValue]+ in Syntax.SwitchCase {+ Syntax.switchCaseTest = (Just (tsExprStr fname)),+ Syntax.switchCaseConsequent = [+ Syntax.StatementReturn (Just callExpr)]}) armFields+ defaultCase =+ Optionals.match defaultMaybe (Syntax.SwitchCase {+ Syntax.switchCaseTest = Nothing,+ Syntax.switchCaseConsequent = [+ Syntax.StatementReturn (Just (tsCall (tsExprIdent "(() => { throw new Error('unmatched case'); })") []))]}) (\dt ->+ let dExpr = encodeTerm cx g currentNs dt+ in Syntax.SwitchCase {+ Syntax.switchCaseTest = Nothing,+ Syntax.switchCaseConsequent = [+ Syntax.StatementReturn (Just dExpr)]})+ allCases = Lists.concat2 armCases [+ defaultCase]+ switchStmt =+ Syntax.StatementSwitch (Syntax.SwitchStatement {+ Syntax.switchStatementDiscriminant = uTag,+ Syntax.switchStatementCases = allCases})+ in (Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+ Syntax.arrowFunctionExpressionParams = [+ Syntax.PatternIdentifier (tsIdent uVar)],+ Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyBlock [+ switchStmt]),+ Syntax.arrowFunctionExpressionAsync = False}))+ Model.TermEither v0 -> Eithers.either (\l -> tsAsAny (tsObject [+ ("tag", (tsExprStr "left")),+ ("value", (encodeTerm cx g currentNs l))])) (\r -> tsAsAny (tsObject [+ ("tag", (tsExprStr "right")),+ ("value", (encodeTerm cx g currentNs r))])) v0+ _ -> tsExprIdent "null"++-- | Render a Hydra term definition as a TypeScript module item+encodeTermDefinition :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> Packaging.TermDefinition -> (Maybe String, Syntax.ModuleItem)+encodeTermDefinition cx g currentNs td =++ let name = Packaging.termDefinitionName td+ lname = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf name)+ rawTerm = Packaging.termDefinitionBody td+ mdoc = Eithers.either (\_ -> Nothing) (\x_ -> x_) (Annotations.getTermDescription cx g rawTerm)+ asExport = \stmt -> Syntax.ModuleItemExport (Syntax.ExportDeclarationDeclaration stmt)+ mScheme =+ Optionals.bind (Packaging.termDefinitionSignature td) (\sig -> Just (Model.typeSchemeBody (Scoping.termSignatureToTypeScheme sig)))+ dterm = Strip.deannotateTerm rawTerm+ funDecl = functionDeclarationFromTerm cx g currentNs lname rawTerm mScheme+ asFunDecl = asExport (Syntax.StatementFunctionDeclaration funDecl)+ item =+ case dterm of+ Model.TermLambda _ -> asFunDecl+ Model.TermTypeLambda _ -> asFunDecl+ _ ->+ let expr = encodeTerm cx g currentNs rawTerm+ declarator =+ Syntax.VariableDeclarator {+ Syntax.variableDeclaratorId = (Syntax.PatternIdentifier (tsIdent lname)),+ Syntax.variableDeclaratorInit = (Just expr)}+ varDecl =+ Syntax.VariableDeclaration {+ Syntax.variableDeclarationKind = Syntax.VariableKindConst,+ Syntax.variableDeclarationDeclarations = [+ declarator]}+ in (asExport (Syntax.StatementVariableDeclaration varDecl))+ in (mdoc, item)++-- | Map a Hydra type to a TypeScript type expression+encodeType :: t0 -> t1 -> Packaging.ModuleName -> Model.Type -> Either t2 Syntax.TypeExpression+encodeType cx g currentNs t =++ let typ = Strip.deannotateType t+ in case typ of+ Model.TypeAnnotated v0 -> encodeType cx g currentNs (Model.annotatedTypeBody v0)+ Model.TypeApplication v0 ->+ let fnTyp = Model.applicationTypeFunction v0+ argTyp = Model.applicationTypeArgument v0+ in (Eithers.bind (encodeType cx g currentNs fnTyp) (\encFn -> Eithers.bind (encodeType cx g currentNs argTyp) (\encArg -> case encFn of+ Syntax.TypeExpressionIdentifier _ -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+ Syntax.parameterizedTypeExpressionBase = encFn,+ Syntax.parameterizedTypeExpressionArguments = [+ encArg]}))+ Syntax.TypeExpressionParameterized v1 -> Right (Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+ Syntax.parameterizedTypeExpressionBase = (Syntax.parameterizedTypeExpressionBase v1),+ Syntax.parameterizedTypeExpressionArguments = (Lists.concat2 (Syntax.parameterizedTypeExpressionArguments v1) [+ encArg])}))+ _ -> Right encFn)))+ Model.TypeForall v0 -> encodeType cx g currentNs (Model.forallTypeBody v0)+ Model.TypeUnit -> Right Syntax.TypeExpressionVoid+ Model.TypeVoid -> Right Syntax.TypeExpressionNever+ Model.TypeLiteral v0 -> Right (encodeLiteralType v0)+ Model.TypeList v0 -> Eithers.map (\enc -> tsParamApp1 "ReadonlyArray" enc) (encodeType cx g currentNs v0)+ Model.TypeSet v0 -> Eithers.map tsReadonlySet (encodeType cx g currentNs v0)+ Model.TypeMap v0 -> Eithers.bind (encodeType cx g currentNs (Model.mapTypeKeys v0)) (\kt -> Eithers.bind (encodeType cx g currentNs (Model.mapTypeValues v0)) (\vt -> Right (tsReadonlyMap kt vt)))+ Model.TypeOptional v0 -> Eithers.map (\enc -> Syntax.TypeExpressionUnion [+ Syntax.TypeExpressionObject [+ tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = "given",+ Syntax.stringLiteralSingleQuote = False}))),+ (tsPropSig "value" False enc)],+ (Syntax.TypeExpressionObject [+ tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = "none",+ Syntax.stringLiteralSingleQuote = False})))])]) (encodeType cx g currentNs v0)+ Model.TypeEither v0 -> Eithers.bind (encodeType cx g currentNs (Model.eitherTypeLeft v0)) (\lt -> Eithers.bind (encodeType cx g currentNs (Model.eitherTypeRight v0)) (\rt ->+ let leftArm =+ Syntax.TypeExpressionObject [+ tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = "left",+ Syntax.stringLiteralSingleQuote = False}))),+ (tsPropSig "value" False lt)]+ rightArm =+ Syntax.TypeExpressionObject [+ tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = "right",+ Syntax.stringLiteralSingleQuote = False}))),+ (tsPropSig "value" False rt)]+ in (Right (Syntax.TypeExpressionUnion [+ leftArm,+ rightArm]))))+ Model.TypePair v0 -> Eithers.bind (encodeType cx g currentNs (Model.pairTypeFirst v0)) (\ft -> Eithers.bind (encodeType cx g currentNs (Model.pairTypeSecond v0)) (\st -> Right (tsTuple [+ ft,+ st])))+ Model.TypeFunction v0 -> Eithers.bind (encodeType cx g currentNs (Model.functionTypeDomain v0)) (\dom -> Eithers.bind (encodeType cx g currentNs (Model.functionTypeCodomain v0)) (\cod -> Right (Syntax.TypeExpressionFunction (Syntax.FunctionTypeExpression {+ Syntax.functionTypeExpressionTypeParameters = [],+ Syntax.functionTypeExpressionParameters = [+ dom],+ Syntax.functionTypeExpressionReturnType = cod}))))+ Model.TypeVariable v0 ->+ let lname = Formatting.capitalize (Names.localNameOf v0)+ in (Optionals.match (Names.moduleNameOf v0) (Right (tsNamedType lname)) (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) (Right (tsNamedType lname)) (+ let nsSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))+ typeAlias = Strings.concat2 "$type_" (Strings.join "_" nsSegs)+ in (Right (tsNamedType (Strings.concat [+ typeAlias,+ ".",+ lname]))))))+ Model.TypeWrap v0 -> encodeType cx g currentNs v0+ Model.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->+ let fname = Model.unName (Model.fieldTypeName ft)+ ftyp = Model.fieldTypeType ft+ in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (tsPropSig fname False sftyp)))) v0) (\members -> Right (Syntax.TypeExpressionObject members))+ Model.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->+ let fname = Model.unName (Model.fieldTypeName ft)+ ftyp = Model.fieldTypeType ft+ in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [+ tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = fname,+ Syntax.stringLiteralSingleQuote = False}))),+ (tsPropSig "value" False sftyp)])))) v0) (\arms -> Right (Syntax.TypeExpressionUnion arms))++-- | Encode a Hydra type definition as an interface declaration, a discriminated-union type alias, or a plain type alias+encodeTypeDefinition :: t0 -> Graph.Graph -> Packaging.ModuleName -> Packaging.TypeDefinition -> Either Errors.Error (Maybe String, Syntax.ModuleItem)+encodeTypeDefinition cx g currentNs tdef =++ let name = Packaging.typeDefinitionName tdef+ typScheme = Packaging.typeDefinitionBody tdef+ rawTyp = Model.typeSchemeBody typScheme+ lname = Formatting.capitalize (Names.localNameOf name)+ in (Eithers.bind (Annotations.getTypeDescription cx g rawTyp) (\mdoc ->+ let forallParams = collectForallParams rawTyp+ typ = stripForalls rawTyp+ typeParams = Lists.map (\v -> tsParam (Formatting.capitalize (Model.unName v))) forallParams+ dtyp = Strip.deannotateType typ+ in case dtyp of+ Model.TypeRecord v0 -> Eithers.bind (Eithers.mapList (\ft ->+ let fname = Model.unName (Model.fieldTypeName ft)+ ftyp = Model.fieldTypeType ft+ in (Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Eithers.bind (Annotations.commentsFromFieldType cx g ft) (\mfdoc -> Right (tsPropSigWithDoc fname False sftyp (mkDocComment mfdoc)))))) v0) (\members -> Right (+ mdoc,+ (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {+ Syntax.interfaceDeclarationName = (tsIdent lname),+ Syntax.interfaceDeclarationTypeParameters = typeParams,+ Syntax.interfaceDeclarationExtends = [],+ Syntax.interfaceDeclarationMembers = members}))))+ Model.TypeUnion v0 -> Eithers.bind (Eithers.mapList (\ft ->+ let fname = Model.unName (Model.fieldTypeName ft)+ ftyp = Model.fieldTypeType ft+ dtyp2 = Strip.deannotateType ftyp+ in case dtyp2 of+ Model.TypeUnit -> Right (Syntax.TypeExpressionObject [+ tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = fname,+ Syntax.stringLiteralSingleQuote = False})))])+ _ -> Eithers.bind (encodeType cx g currentNs ftyp) (\sftyp -> Right (Syntax.TypeExpressionObject [+ tsPropSig "tag" False (Syntax.TypeExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = fname,+ Syntax.stringLiteralSingleQuote = False}))),+ (tsPropSig "value" False sftyp)]))) v0) (\arms -> Right (+ mdoc,+ (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {+ Syntax.typeAliasDeclarationName = (tsIdent lname),+ Syntax.typeAliasDeclarationTypeParameters = typeParams,+ Syntax.typeAliasDeclarationType = (Syntax.TypeExpressionUnion arms)}))))+ Model.TypeWrap v0 -> Eithers.bind (encodeType cx g currentNs v0) (\sftyp -> Right (+ mdoc,+ (Syntax.ModuleItemInterface (Syntax.InterfaceDeclaration {+ Syntax.interfaceDeclarationName = (tsIdent lname),+ Syntax.interfaceDeclarationTypeParameters = typeParams,+ Syntax.interfaceDeclarationExtends = [],+ Syntax.interfaceDeclarationMembers = [+ tsPropSig "value" False sftyp]}))))+ _ -> Eithers.bind (encodeType cx g currentNs typ) (\styp -> Right (+ mdoc,+ (Syntax.ModuleItemTypeAlias (Syntax.TypeAliasDeclaration {+ Syntax.typeAliasDeclarationName = (tsIdent lname),+ Syntax.typeAliasDeclarationTypeParameters = typeParams,+ Syntax.typeAliasDeclarationType = styp}))))))++-- | Try to encode a Hydra type as a TS type expression, falling back to any if encodeType fails+encodeTypeOrAny :: t0 -> t1 -> Packaging.ModuleName -> Model.Type -> Syntax.TypeExpression+encodeTypeOrAny cx g currentNs typ =+ Eithers.either (\_e -> Syntax.TypeExpressionAny) (\te -> te) (encodeType cx g currentNs typ)++-- | Keep only names whose module differs from the current module's+filterNonLocalNames :: Packaging.ModuleName -> S.Set Model.Name -> S.Set Model.Name+filterNonLocalNames currentNs names =+ Sets.fromList (Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\nameNs -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName nameNs)) Nothing (Just n))) (Sets.toList names)))++-- | Walk an application spine, returning the innermost head term and its arguments in application order+flattenApplication :: Model.Term -> (Model.Term, [Model.Term])+flattenApplication t =++ let dt = Strip.deannotateTerm t+ in case dt of+ Model.TermApplication v0 ->+ let inner = flattenApplication (Model.applicationFunction v0)+ head_ = Pairs.first inner+ prevArgs = Pairs.second inner+ in (head_, (Lists.concat2 prevArgs (Lists.singleton (Model.applicationArgument v0))))+ _ -> (t, [])++-- | Rewrite free occurrences of the given target names from x to x(undefined), forcing a thunked binding created by thunkLazyLet+forceLazyRefs :: S.Set Model.Name -> Model.Term -> Model.Term+forceLazyRefs targets0 term0 =+ Rewriting.rewriteTermWithContext (\recurse0 -> \targets -> \term -> case term of+ Model.TermVariable v0 -> Logic.ifElse (Sets.member v0 targets) (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermVariable v0),+ Model.applicationArgument = Model.TermUnit})) term+ Model.TermLambda v0 ->+ let innerTargets = Sets.delete (Model.lambdaParameter v0) targets+ in (recurse0 innerTargets term)+ Model.TermLet v0 ->+ let boundNames = Sets.fromList (Lists.map Model.bindingName (Model.letBindings v0))+ innerTargets = Sets.difference targets boundNames+ in (recurse0 innerTargets term)+ _ -> recurse0 targets term) targets0 term0++-- | Build a TS function declaration from a Hydra term by peeling lambdas and let bindings into explicit parameters, statements, and a body+functionDeclarationFromTerm :: Typing.InferenceContext -> Graph.Graph -> Packaging.ModuleName -> String -> Model.Term -> Maybe Model.Type -> Syntax.FunctionDeclaration+functionDeclarationFromTerm cx g currentNs lname term _mScheme =++ let fsE = analyzeTypeScriptFunction cx g term+ fs =+ Eithers.either (\_err -> Typing.FunctionStructure {+ Typing.functionStructureTypeParams = [],+ Typing.functionStructureParams = [],+ Typing.functionStructureBindings = [],+ Typing.functionStructureBody = term,+ Typing.functionStructureDomains = [],+ Typing.functionStructureCodomain = Nothing,+ Typing.functionStructureEnvironment = g}) (\ok -> ok) fsE+ fsParams = Typing.functionStructureParams fs+ fsDoms = Typing.functionStructureDomains fs+ fsBindings0 = Typing.functionStructureBindings fs+ fsBody0 = Typing.functionStructureBody fs+ thunked = thunkLazyBindings fsBindings0 fsBody0+ fsBindings = Pairs.first thunked+ fsBody = Pairs.second thunked+ fsEnv = Typing.functionStructureEnvironment fs+ domPad = Model.TypeVariable (Model.Name "_")+ fsDomsPadded = Lists.concat2 fsDoms (Lists.replicate (Math.sub (Lists.length fsParams) (Lists.length fsDoms)) domPad)+ paramPatterns =+ Lists.map (\pair -> encodeParam cx fsEnv currentNs (Pairs.first pair) (Pairs.second pair)) (Lists.zip fsParams fsDomsPadded)+ sortedBindings = sortBindingsTopologically fsBindings+ bindingStmts = Lists.map (\b -> encodeBindingAsStatement cx fsEnv currentNs b) sortedBindings+ bodyExpr = encodeTerm cx fsEnv currentNs fsBody+ returnStmt = Syntax.StatementReturn (Just bodyExpr)+ block = Lists.concat2 bindingStmts [+ returnStmt]+ in Syntax.FunctionDeclaration {+ Syntax.functionDeclarationId = (tsIdent lname),+ Syntax.functionDeclarationParams = paramPatterns,+ Syntax.functionDeclarationBody = block,+ Syntax.functionDeclarationAsync = False,+ Syntax.functionDeclarationGenerator = False}++-- | Render a set of qualified names as TypeScript import statements grouped by source module+importsToText :: S.Set String -> String -> Packaging.ModuleName -> S.Set Model.Name -> String+importsToText overlaySubs kind currentNs names =++ let pairs =+ Optionals.givens (Lists.map (\n -> Optionals.match (Names.moduleNameOf n) Nothing (\ns -> Logic.ifElse (Equality.equal (Packaging.unModuleName currentNs) (Packaging.unModuleName ns)) Nothing (Just (ns, n)))) (Sets.toList names))+ transformLocal =+ \s -> Logic.ifElse (Equality.equal kind "type") (Formatting.capitalize s) (Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords s)+ importKeyword = Logic.ifElse (Equality.equal kind "type") "import type" "import"+ grouped =+ Lists.foldl (\acc -> \p ->+ let ns = Pairs.first p+ n = Pairs.second p+ local = transformLocal (Names.localNameOf n)+ existing = Optionals.withDefault [] (Maps.lookup ns acc)+ in (Maps.insert ns (Lists.cons local existing) acc)) Maps.empty pairs+ currentSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName currentNs))+ currentDepth = Lists.length currentSegs+ currentIsTest =+ Logic.and (Ordering.gt (Lists.length currentSegs) 1) (Equality.equal (Optionals.withDefault "" (Lists.at 1 currentSegs)) "test")+ baseUpPrefix =+ Logic.ifElse (Equality.equal currentDepth 1) "./" (Strings.concat (Lists.replicate (Math.sub currentDepth 1) "../"))+ lines =+ Lists.map (\entry ->+ let ns = Pairs.first entry+ locals = Pairs.second entry+ targetSegs = Lists.drop 1 (Strings.splitOn "." (Packaging.unModuleName ns))+ targetIsTest =+ Logic.and (Ordering.gt (Lists.length targetSegs) 1) (Equality.equal (Optionals.withDefault "" (Lists.at 1 targetSegs)) "test")+ targetSub = Optionals.withDefault "" (Lists.at 2 targetSegs)+ targetPathSegs =+ Logic.ifElse (Logic.and (Logic.and (Equality.equal (Optionals.withDefault "" (Lists.head targetSegs)) "core") (Equality.equal (Optionals.withDefault "" (Lists.at 1 targetSegs)) "lib")) (Sets.member targetSub overlaySubs)) [+ "core",+ "overlay",+ "typescript",+ "lib",+ targetSub] targetSegs+ targetPath = Strings.join "/" targetPathSegs+ upPrefix =+ Logic.ifElse (Logic.and currentIsTest (Logic.not targetIsTest)) (Strings.concat2 baseUpPrefix "../../../main/typescript/hydra/") baseUpPrefix+ nsSlug = Strings.join "_" targetSegs+ moduleAlias = Logic.ifElse (Equality.equal kind "type") (Strings.concat2 "$type_" nsSlug) (Strings.concat2 "$mod_" nsSlug)+ in (Strings.concat [+ importKeyword,+ " * as ",+ moduleAlias,+ " from \"",+ upPrefix,+ targetPath,+ ".js\";\n"])) (Maps.toList grouped)+ in (Strings.concat lines)++-- | Look up a primitive by name and return its per-parameter laziness flags in parameter order+lazyFlagsForPrimitive :: Graph.Graph -> Model.Name -> [Bool]+lazyFlagsForPrimitive g name =+ Optionals.match (Maps.lookup name (Graph.graphPrimitives g)) [] (\prim -> Lists.map (\p -> Typing.parameterIsLazy p) (Typing.termSignatureParameters (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))))++-- | True when a let-binding's value should be thunked to preserve Haskell's lazy evaluation semantics+letBindingIsThunkCandidate :: Model.Binding -> Bool+letBindingIsThunkCandidate b =++ let dterm = Strip.deannotateAndDetypeTerm (Model.bindingTerm b)+ isLambda =+ case dterm of+ Model.TermLambda _ -> True+ _ -> False+ freeVars = Variables.freeVariablesInTerm (Model.bindingTerm b)+ callsShow =+ Lists.foldl (\acc -> \n -> Logic.or acc (Optionals.match (Names.moduleNameOf n) False (\mn -> Equality.equal (Lists.take 2 (Strings.splitOn "." (Packaging.unModuleName mn))) [+ "hydra",+ "show"]))) False (Sets.toList freeVars)+ in (Logic.and (Logic.not isLambda) callsShow)++-- | Build a documentation comment from an optional description string, or nothing if the description is missing or empty+mkDocComment :: Maybe String -> Maybe Syntax.DocumentationComment+mkDocComment mdesc =+ Optionals.match mdesc Nothing (\d -> Logic.ifElse (Equality.equal d "") Nothing (Just (Syntax.DocumentationComment {+ Syntax.documentationCommentDescription = (PrintDocs.renderDocStringWith tsDocEntityRef d),+ Syntax.documentationCommentTags = []})))++-- | Convert a Hydra module to a map from .ts file path to TypeScript source+moduleToTypeScript :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)+moduleToTypeScript overlaySubs mod defs cx g =++ let currentNs = Packaging.moduleName mod+ partitioned = Environment.partitionDefinitions defs+ typeDefs = Pairs.first partitioned+ rawTermDefs = Pairs.second partitioned+ termDefs = sortTermDefsTopologically currentNs rawTermDefs+ typeImportsFromTypes =+ Lists.foldl (\acc -> \td -> Sets.union acc (collectImports currentNs (Model.typeSchemeBody (Packaging.typeDefinitionBody td)))) Sets.empty typeDefs+ typeImportsFromTerms =+ Lists.foldl (\acc -> \td -> Optionals.match (Packaging.termDefinitionSignature td) acc (\sig -> Sets.union acc (collectImports currentNs (Model.typeSchemeBody (Scoping.termSignatureToTypeScheme sig))))) Sets.empty termDefs+ typeImportsFromInner =+ Lists.foldl (\acc -> \td -> Sets.union acc (collectInnerTypeImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs+ typeImports = Sets.union (Sets.union typeImportsFromTypes typeImportsFromTerms) typeImportsFromInner+ termImports =+ Lists.foldl (\acc -> \td -> Sets.union acc (collectTermImports currentNs (Packaging.termDefinitionBody td))) Sets.empty termDefs+ typeImportsBlock = importsToText overlaySubs "type" currentNs typeImports+ termImportsBlock = importsToText overlaySubs "value" currentNs termImports+ importsBlock = Strings.concat2 typeImportsBlock termImportsBlock+ in (Eithers.bind (Eithers.mapList (encodeTypeDefinition cx g currentNs) typeDefs) (\typeItems ->+ let termItems = Lists.map (encodeTermDefinition cx g currentNs) termDefs+ allItems = Lists.concat2 typeItems termItems+ mModuleDoc = Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em)+ moduleDocText = Optionals.match mModuleDoc "" (\d -> Strings.concat2 (Serde.toTypeScriptComments d []) "\n\n")+ header = Strings.concat2 "// Note: this is an automatically generated file. Do not edit.\n\n" moduleDocText+ renderItem =+ \docAndItem ->+ let mdoc = Pairs.first docAndItem+ item = Pairs.second docAndItem+ itemText = printModuleItem item+ in (Optionals.match mdoc itemText (\d -> Strings.concat [+ Serde.toTypeScriptComments d [],+ "\n",+ itemText]))+ body = Strings.join "\n\n" (Lists.map renderItem allItems)+ filePath = Names.moduleNameToFilePath Util.CaseConventionCamel (File.FileExtension "ts") (Packaging.moduleName mod)+ in (Right (Maps.singleton filePath (Strings.concat [+ header,+ importsBlock,+ (Logic.ifElse (Equality.equal importsBlock "") "" "\n"),+ body,+ (Logic.ifElse (Equality.equal body "") "" "\n")])))))++-- | Render an interface declaration+printInterfaceDeclaration :: Syntax.InterfaceDeclaration -> String+printInterfaceDeclaration decl =++ let name = Syntax.unIdentifier (Syntax.interfaceDeclarationName decl)+ params = printTypeParameterList (Syntax.interfaceDeclarationTypeParameters decl)+ exts = Syntax.interfaceDeclarationExtends decl+ extClause =+ Logic.ifElse (Lists.isEmpty exts) "" (Strings.concat2 " extends " (Strings.join ", " (Lists.map printTypeExpression exts)))+ members = Syntax.interfaceDeclarationMembers decl+ renderMember = \ps -> Strings.join "\n " (Formatting.lines (printPropertySignature ps))+ body =+ Logic.ifElse (Lists.isEmpty members) "" (Strings.concat [+ "\n ",+ (Strings.join ";\n " (Lists.map renderMember members)),+ ";\n"])+ in (Strings.concat [+ "export interface ",+ name,+ params,+ extClause,+ " {",+ body,+ "}\n"])++-- | Render a TypeScript literal as source text+printLiteral :: Syntax.Literal -> String+printLiteral lit =+ case lit of+ Syntax.LiteralString v0 -> tsEscapeString (Syntax.stringLiteralValue v0)+ Syntax.LiteralBoolean v0 -> Logic.ifElse v0 "true" "false"+ Syntax.LiteralNull -> "null"+ Syntax.LiteralUndefined -> "undefined"+ _ -> "null"++-- | Render a top-level module item+printModuleItem :: Syntax.ModuleItem -> String+printModuleItem mi =+ case mi of+ Syntax.ModuleItemInterface v0 -> printInterfaceDeclaration v0+ Syntax.ModuleItemTypeAlias v0 -> printTypeAliasDeclaration v0+ Syntax.ModuleItemStatement _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)+ Syntax.ModuleItemImport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)+ Syntax.ModuleItemExport _ -> Serialization.printExpr (Serde.moduleItemToExpr mi)+ _ -> ""++-- | Render a property signature, with an optional JSDoc comment prepended+printPropertySignature :: Syntax.PropertySignature -> String+printPropertySignature ps =++ let mcomments = Syntax.propertySignatureComments ps+ line =+ Strings.concat [+ Logic.ifElse (Syntax.propertySignatureReadonly ps) "readonly " "",+ (Syntax.unIdentifier (Syntax.propertySignatureName ps)),+ (Logic.ifElse (Syntax.propertySignatureOptional ps) "?" ""),+ ": ",+ (printTypeExpression (Syntax.propertySignatureType ps))]+ in (Optionals.match mcomments line (\dc -> Strings.concat [+ Serde.toTypeScriptComments (Syntax.documentationCommentDescription dc) (Syntax.documentationCommentTags dc),+ "\n",+ line]))++-- | Render a type alias declaration+printTypeAliasDeclaration :: Syntax.TypeAliasDeclaration -> String+printTypeAliasDeclaration decl =++ let name = Syntax.unIdentifier (Syntax.typeAliasDeclarationName decl)+ params = printTypeParameterList (Syntax.typeAliasDeclarationTypeParameters decl)+ rhs = printTypeExpression (Syntax.typeAliasDeclarationType decl)+ in (Strings.concat [+ "export type ",+ name,+ params,+ " = ",+ rhs,+ ";\n"])++-- | Render a TypeScript type expression as source text+printTypeExpression :: Syntax.TypeExpression -> String+printTypeExpression t =+ case t of+ Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0+ Syntax.TypeExpressionLiteral v0 -> printLiteral v0+ Syntax.TypeExpressionArray v0 -> Strings.concat [+ "ReadonlyArray<",+ (printTypeExpression (Syntax.unArrayTypeExpression v0)),+ ">"]+ Syntax.TypeExpressionTuple v0 -> Strings.concat [+ "readonly [",+ (Strings.join ", " (Lists.map printTypeExpression v0)),+ "]"]+ Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map printTypeExpression v0)+ Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map printTypeExpression v0)+ Syntax.TypeExpressionParameterized v0 -> Strings.concat [+ printTypeExpression (Syntax.parameterizedTypeExpressionBase v0),+ "<",+ (Strings.join ", " (Lists.map printTypeExpression (Syntax.parameterizedTypeExpressionArguments v0))),+ ">"]+ Syntax.TypeExpressionOptional v0 -> Strings.concat [+ printTypeExpression v0,+ " | undefined"]+ Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (printTypeExpression v0)+ Syntax.TypeExpressionObject v0 -> Strings.concat [+ "{ ",+ (Strings.join "; " (Lists.map printPropertySignature v0)),+ " }"]+ Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"+ Syntax.TypeExpressionAny -> "any"+ Syntax.TypeExpressionUnknown -> "unknown"+ Syntax.TypeExpressionVoid -> "void"+ Syntax.TypeExpressionNever -> "never"+ _ -> "unknown"++-- | Render one generic type parameter, with an optional extends constraint+printTypeParameter :: Syntax.TypeParameter -> String+printTypeParameter tp =++ let name = Syntax.unIdentifier (Syntax.typeParameterName tp)+ constraint = Syntax.typeParameterConstraint tp+ in (Optionals.match constraint name (\c -> Strings.concat [+ name,+ " extends ",+ (printTypeExpression c)]))++-- | Render a generic parameter list, or the empty string when there are no parameters+printTypeParameterList :: [Syntax.TypeParameter] -> String+printTypeParameterList tps =+ Logic.ifElse (Lists.isEmpty tps) "" (Strings.concat [+ "<",+ (Strings.join ", " (Lists.map printTypeParameter tps)),+ ">"])++-- | Sanitize a Hydra parameter name into a valid, non-reserved TS identifier+sanitizeParamName :: Model.Name -> String+sanitizeParamName n = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords (Names.localNameOf n)++-- | Reorder let-bindings so each appears after the sibling bindings it depends on, avoiding JS temporal-dead-zone errors+sortBindingsTopologically :: [Model.Binding] -> [Model.Binding]+sortBindingsTopologically bindings =++ let byName = Maps.fromList (Lists.map (\b -> (Model.bindingName b, b)) bindings)+ adjacency =+ Lists.map (\b ->+ let bname = Model.bindingName b+ bterm = Model.bindingTerm b+ freeVars = Variables.freeVariablesInTerm bterm+ deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)+ in (bname, deps)) bindings+ sccs = Sorting.topologicalSortComponents adjacency+ in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))++-- | Reorder term definitions so each appears after the intra-module definitions it depends on+sortTermDefsTopologically :: t0 -> [Packaging.TermDefinition] -> [Packaging.TermDefinition]+sortTermDefsTopologically currentNs tdefs =++ let byName = Maps.fromList (Lists.map (\td -> (Packaging.termDefinitionName td, td)) tdefs)+ adjacency =+ Lists.map (\td ->+ let tname = Packaging.termDefinitionName td+ tterm = Packaging.termDefinitionBody td+ freeVars = eagerFreeVariablesInTerm tterm+ deps = Lists.filter (\n -> Maps.member n byName) (Sets.toList freeVars)+ in (tname, deps)) tdefs+ sccs = Sorting.topologicalSortComponents adjacency+ in (Optionals.givens (Lists.map (\n -> Maps.lookup n byName) (Lists.concat sccs)))++-- | Strip leading forall quantifiers from a type, returning the innermost body+stripForalls :: Model.Type -> Model.Type+stripForalls t =++ let dt = Strip.deannotateType t+ in case dt of+ Model.TypeForall v0 -> stripForalls (Model.forallTypeBody v0)+ _ -> dt++-- | If a term reduces, through annotations and type applications, to a variable reference, return its name+termHeadVariable :: Model.Term -> Maybe Model.Name+termHeadVariable t =++ let dt = Strip.deannotateTerm t+ in case dt of+ Model.TermVariable v0 -> Just v0+ Model.TermTypeApplication v0 -> termHeadVariable (Model.typeApplicationTermBody v0)+ _ -> Nothing++-- | The bindings-and-body core of thunkLazyLet, shared by the Term_let encoder and the lifted-binding path in functionDeclarationFromTerm+thunkLazyBindings :: [Model.Binding] -> Model.Term -> ([Model.Binding], Model.Term)+thunkLazyBindings bindings body =++ let candidates = Lists.filter (\b -> letBindingIsThunkCandidate b) bindings+ in (Logic.ifElse (Lists.isEmpty candidates) (bindings, body) (+ let targets = Sets.fromList (Lists.map Model.bindingName candidates)+ wrapCandidate =+ \b -> Logic.ifElse (letBindingIsThunkCandidate b) (Model.Binding {+ Model.bindingName = (Model.bindingName b),+ Model.bindingTerm = (Model.TermLambda (Model.Lambda {+ Model.lambdaParameter = (Model.Name "_"),+ Model.lambdaDomain = Nothing,+ Model.lambdaBody = (forceLazyRefs targets (Model.bindingTerm b))})),+ Model.bindingTypeScheme = (Model.bindingTypeScheme b)}) (Model.Binding {+ Model.bindingName = (Model.bindingName b),+ Model.bindingTerm = (forceLazyRefs targets (Model.bindingTerm b)),+ Model.bindingTypeScheme = (Model.bindingTypeScheme b)})+ in (Lists.map wrapCandidate bindings, (forceLazyRefs targets body))))++-- | Thunk every let-binding for which letBindingIsThunkCandidate holds, and rewrite forced references to it accordingly+thunkLazyLet :: Model.Let -> Model.Let+thunkLazyLet lt =++ let result = thunkLazyBindings (Model.letBindings lt) (Model.letBody lt)+ in Model.Let {+ Model.letBindings = (Pairs.first result),+ Model.letBody = (Pairs.second result)}++-- | An array expression: [e1, e2, ...]+tsArray :: [Syntax.Expression] -> Syntax.Expression+tsArray elems = Syntax.ExpressionArray (Lists.map (\e -> Syntax.ArrayElementExpression e) elems)++-- | An untyped arrow function with an expression body+tsArrow :: [String] -> Syntax.Expression -> Syntax.Expression+tsArrow params body =+ Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+ Syntax.arrowFunctionExpressionParams = (Lists.map (\p -> Syntax.PatternIdentifier (tsIdent p)) params),+ Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),+ Syntax.arrowFunctionExpressionAsync = False})++-- | A typed arrow function with typed parameter patterns+tsArrowTyped :: [Syntax.Pattern] -> Syntax.Expression -> Syntax.Expression+tsArrowTyped patterns body =+ Syntax.ExpressionArrow (Syntax.ArrowFunctionExpression {+ Syntax.arrowFunctionExpressionParams = patterns,+ Syntax.arrowFunctionExpressionBody = (Syntax.ArrowFunctionBodyExpression body),+ Syntax.arrowFunctionExpressionAsync = False})++-- | Wrap an expression in a TypeScript 'as any' cast+tsAsAny :: Syntax.Expression -> Syntax.Expression+tsAsAny e =+ Syntax.ExpressionAsExpression (Syntax.AsExpression {+ Syntax.asExpressionExpression = e,+ Syntax.asExpressionType = Syntax.TypeExpressionAny})++-- | A call expression, parenthesizing the callee when it's an arrow function or other ambiguous call target+tsCall :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression+tsCall callee args =+ Syntax.ExpressionCall (Syntax.CallExpression {+ Syntax.callExpressionCallee = callee,+ Syntax.callExpressionArguments = args,+ Syntax.callExpressionOptional = False})++-- | A conditional (ternary) expression+tsCond :: Syntax.Expression -> Syntax.Expression -> Syntax.Expression -> Syntax.Expression+tsCond test cons alt =+ Syntax.ExpressionConditional (Syntax.ConditionalExpression {+ Syntax.conditionalExpressionTest = test,+ Syntax.conditionalExpressionConsequent = cons,+ Syntax.conditionalExpressionAlternate = alt})++-- | Render a 'EntityReference' as TSDoc link syntax+tsDocEntityRef :: Packaging.EntityReference -> String+tsDocEntityRef x =+ case x of+ Packaging.EntityReferenceDefinition v0 -> Strings.concat2 "{@link " (Strings.concat2 (case v0 of+ Packaging.DefinitionReferencePrimitive v1 -> Names.localNameOf v1+ Packaging.DefinitionReferenceTerm v1 -> Names.localNameOf v1+ Packaging.DefinitionReferenceType v1 -> Names.localNameOf v1) "}")+ Packaging.EntityReferenceModule v0 -> Packaging.unModuleName v0+ Packaging.EntityReferencePackage v0 -> Packaging.unPackageName v0+ Packaging.EntityReferenceTermExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")+ Packaging.EntityReferenceTypeExpr v0 -> Strings.concat2 "`" (Strings.concat2 v0 "`")++-- | Identity getter for analyzeFunctionTerm when the environment is a Graph+tsEnvGetGraph :: t0 -> t0+tsEnvGetGraph g = g++-- | Setter for analyzeFunctionTerm when the environment is a Graph+tsEnvSetGraph :: t0 -> t1 -> t0+tsEnvSetGraph newG _old = newG++-- | Escape a Hydra string for embedding as a double-quoted TypeScript string literal+tsEscapeString :: String -> String+tsEscapeString s =++ let escapeChar =+ \c -> Logic.ifElse (Equality.equal c 34) "\\\"" (Logic.ifElse (Equality.equal c 92) "\\\\" (Logic.ifElse (Equality.equal c 10) "\\n" (Logic.ifElse (Equality.equal c 13) "\\r" (Logic.ifElse (Equality.equal c 9) "\\t" (Logic.ifElse (Equality.equal c 8) "\\b" (Logic.ifElse (Equality.equal c 12) "\\f" (Strings.fromList (Lists.singleton c))))))))+ in (Strings.concat [+ "\"",+ (Strings.concat (Lists.map escapeChar (Strings.toList s))),+ "\""])++-- | A bare identifier expression+tsExprIdent :: String -> Syntax.Expression+tsExprIdent s = Syntax.ExpressionIdentifier (tsIdent s)++-- | A string-literal expression+tsExprStr :: String -> Syntax.Expression+tsExprStr s =+ Syntax.ExpressionLiteral (Syntax.LiteralString (Syntax.StringLiteral {+ Syntax.stringLiteralValue = s,+ Syntax.stringLiteralSingleQuote = False}))++-- | Wrap a string into a TypeScript identifier+tsIdent :: String -> Syntax.Identifier+tsIdent s = Syntax.Identifier s++-- | A member-access expression: obj.prop+tsMember :: Syntax.Expression -> String -> Syntax.Expression+tsMember obj prop =+ Syntax.ExpressionMember (Syntax.MemberExpression {+ Syntax.memberExpressionObject = obj,+ Syntax.memberExpressionProperty = (tsExprIdent prop),+ Syntax.memberExpressionComputed = False,+ Syntax.memberExpressionOptional = False})++-- | A bare named type reference+tsNamedType :: String -> Syntax.TypeExpression+tsNamedType n = Syntax.TypeExpressionIdentifier (tsIdent n)++-- | A new-expression: new C(args)+tsNew :: Syntax.Expression -> [Syntax.Expression] -> Syntax.Expression+tsNew callee args =+ Syntax.ExpressionNew (Syntax.CallExpression {+ Syntax.callExpressionCallee = callee,+ Syntax.callExpressionArguments = args,+ Syntax.callExpressionOptional = False})++-- | An object literal with identifier-style keys+tsObject :: [(String, Syntax.Expression)] -> Syntax.Expression+tsObject props =+ Syntax.ExpressionObject (Lists.map (\kv ->+ let k = Pairs.first kv+ v = Pairs.second kv+ in Syntax.Property {+ Syntax.propertyKey = (tsExprIdent k),+ Syntax.propertyValue = v,+ Syntax.propertyKind = Syntax.PropertyKindInit,+ Syntax.propertyComputed = False,+ Syntax.propertyShorthand = False}) props)++-- | A generic type parameter with no constraint+tsParam :: String -> Syntax.TypeParameter+tsParam n =+ Syntax.TypeParameter {+ Syntax.typeParameterName = (tsIdent n),+ Syntax.typeParameterConstraint = Nothing,+ Syntax.typeParameterDefault = Nothing}++-- | A parameterized type with one type argument+tsParamApp1 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression+tsParamApp1 n arg =+ Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+ Syntax.parameterizedTypeExpressionBase = (tsNamedType n),+ Syntax.parameterizedTypeExpressionArguments = [+ arg]})++-- | A parameterized type with two type arguments+tsParamApp2 :: String -> Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression+tsParamApp2 n a b =+ Syntax.TypeExpressionParameterized (Syntax.ParameterizedTypeExpression {+ Syntax.parameterizedTypeExpressionBase = (tsNamedType n),+ Syntax.parameterizedTypeExpressionArguments = [+ a,+ b]})++-- | Wrap an expression in parentheses when its serialized form needs grouping+tsParen :: Syntax.Expression -> Syntax.Expression+tsParen e = Syntax.ExpressionParenthesized e++-- | A readonly property signature, with the name sanitized for TS reserved words+tsPropSig :: String -> Bool -> Syntax.TypeExpression -> Syntax.PropertySignature+tsPropSig name optional typ = tsPropSigWithDoc name optional typ Nothing++-- | A readonly property signature with an optional JSDoc comment above the property line+tsPropSigWithDoc :: String -> Bool -> Syntax.TypeExpression -> Maybe Syntax.DocumentationComment -> Syntax.PropertySignature+tsPropSigWithDoc name optional typ mcomments =++ let safe = Formatting.sanitizeWithUnderscores Language.typeScriptReservedWords name+ in Syntax.PropertySignature {+ Syntax.propertySignatureName = (tsIdent safe),+ Syntax.propertySignatureType = typ,+ Syntax.propertySignatureOptional = optional,+ Syntax.propertySignatureReadonly = True,+ Syntax.propertySignatureComments = mcomments}++-- | A ReadonlyMap type with the given key and value types+tsReadonlyMap :: Syntax.TypeExpression -> Syntax.TypeExpression -> Syntax.TypeExpression+tsReadonlyMap k v = tsParamApp2 "ReadonlyMap" k v++-- | A ReadonlySet type with the given element type+tsReadonlySet :: Syntax.TypeExpression -> Syntax.TypeExpression+tsReadonlySet t = tsParamApp1 "ReadonlySet" t++-- | A tuple type+tsTuple :: [Syntax.TypeExpression] -> Syntax.TypeExpression+tsTuple ts = Syntax.TypeExpressionTuple ts++-- | A typed-identifier pattern for a function parameter with a known domain type+tsTypedIdent :: String -> Syntax.TypeExpression -> Syntax.Pattern+tsTypedIdent name typ =+ Syntax.PatternTyped (Syntax.TypedPattern {+ Syntax.typedPatternPattern = (Syntax.PatternIdentifier (tsIdent name)),+ Syntax.typedPatternType = typ})++-- | The undefined value as an expression+tsUndefined :: Syntax.Expression+tsUndefined = tsExprIdent "undefined"
+ src/main/haskell/Hydra/Typescript/Dsl/Syntax.hs view
@@ -0,0 +1,7269 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.typescript.syntax++module Hydra.Typescript.Dsl.Syntax where++import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Typescript.Syntax as Syntax+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Int as I++-- | DSL name token for hydra.typescript.syntax.ArrayElement+arrayElementArrayElement :: Typed.TypedName Syntax.ArrayElement+arrayElementArrayElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrayElement")++-- | DSL injection for the expression variant of hydra.typescript.syntax.ArrayElement+arrayElementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrayElement+arrayElementExpression x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrayElement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "expression"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the hole variant of hydra.typescript.syntax.ArrayElement+arrayElementHole :: Typed.TypedTerm Syntax.ArrayElement+arrayElementHole =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrayElement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "hole"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the spread variant of hydra.typescript.syntax.ArrayElement+arrayElementSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.ArrayElement+arrayElementSpread x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrayElement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "spread"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.typescript.syntax.ArrayTypeExpression wrapper+arrayTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ArrayTypeExpression+arrayTypeExpression x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ArrayTypeExpression"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ArrayTypeExpression+arrayTypeExpressionArrayTypeExpression :: Typed.TypedName Syntax.ArrayTypeExpression+arrayTypeExpressionArrayTypeExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrayTypeExpression")++-- | DSL name token for hydra.typescript.syntax.ArrowFunctionBody+arrowFunctionBodyArrowFunctionBody :: Typed.TypedName Syntax.ArrowFunctionBody+arrowFunctionBodyArrowFunctionBody = Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrowFunctionBody")++-- | DSL injection for the block variant of hydra.typescript.syntax.ArrowFunctionBody+arrowFunctionBodyBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.ArrowFunctionBody+arrowFunctionBodyBlock x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionBody"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "block"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expression variant of hydra.typescript.syntax.ArrowFunctionBody+arrowFunctionBodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ArrowFunctionBody+arrowFunctionBodyExpression x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionBody"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "expression"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpression :: Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpression params body async =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Typed.unTypedTerm params)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Typed.unTypedTerm async)}]}))++-- | DSL name token for hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionArrowFunctionExpression :: Typed.TypedName Syntax.ArrowFunctionExpression+arrowFunctionExpressionArrowFunctionExpression =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression")++-- | DSL accessor for the async field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool+arrowFunctionExpressionAsync x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody+arrowFunctionExpressionBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the params field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern]+arrowFunctionExpressionParams x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the async field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionWithAsync :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpressionWithAsync original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionWithBody :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.ArrowFunctionBody -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpressionWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the params field of hydra.typescript.syntax.ArrowFunctionExpression+arrowFunctionExpressionWithParams :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.ArrowFunctionExpression+arrowFunctionExpressionWithParams original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.AsExpression+asExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression+asExpression expression type_ =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "expression"),+ Model.fieldTerm = (Typed.unTypedTerm expression)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL name token for hydra.typescript.syntax.AsExpression+asExpressionAsExpression :: Typed.TypedName Syntax.AsExpression+asExpressionAsExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.AsExpression")++-- | DSL accessor for the expression field of hydra.typescript.syntax.AsExpression+asExpressionExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression+asExpressionExpression x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+ Model.projectionFieldName = (Model.Name "expression")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.AsExpression+asExpressionType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression+asExpressionType x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.typescript.syntax.AsExpression+asExpressionWithExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AsExpression+asExpressionWithExpression original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "expression"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.AsExpression+asExpressionWithType :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.AsExpression+asExpressionWithType original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "expression"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AsExpression"),+ Model.projectionFieldName = (Model.Name "expression")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.AssignmentExpression+assignmentExpression :: Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpression operator left right =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Typed.unTypedTerm operator)},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm left)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm right)}]}))++-- | DSL name token for hydra.typescript.syntax.AssignmentExpression+assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression+assignmentExpressionAssignmentExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.AssignmentExpression")++-- | DSL accessor for the left field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern+assignmentExpressionLeft x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator+assignmentExpressionOperator x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression+assignmentExpressionRight x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the left field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionWithLeft :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionWithLeft original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionWithOperator :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionWithOperator original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.AssignmentExpression+assignmentExpressionWithRight :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionWithRight original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentExpression"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the addAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAddAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorAddAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "addAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the andAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorAndAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "andAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the assign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "assign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.AssignmentOperator+assignmentOperatorAssignmentOperator :: Typed.TypedName Syntax.AssignmentOperator+assignmentOperatorAssignmentOperator = Typed.TypedName (Model.Name "hydra.typescript.syntax.AssignmentOperator")++-- | DSL injection for the bitwiseAndAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorBitwiseAndAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorBitwiseAndAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bitwiseAndAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseOrAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorBitwiseOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorBitwiseOrAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bitwiseOrAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseXorAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorBitwiseXorAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorBitwiseXorAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bitwiseXorAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the divideAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorDivideAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorDivideAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "divideAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the exponentiateAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorExponentiateAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorExponentiateAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "exponentiateAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the leftShiftAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorLeftShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorLeftShiftAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "leftShiftAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the moduloAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorModuloAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorModuloAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "moduloAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the multiplyAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorMultiplyAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorMultiplyAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "multiplyAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the nullishAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorNullishAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorNullishAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "nullishAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the orAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorOrAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorOrAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "orAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the rightShiftAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorRightShiftAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "rightShiftAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the subtractAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorSubtractAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorSubtractAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "subtractAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the unsignedRightShiftAssign variant of hydra.typescript.syntax.AssignmentOperator+assignmentOperatorUnsignedRightShiftAssign :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorUnsignedRightShiftAssign =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "unsignedRightShiftAssign"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.AssignmentPattern+assignmentPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern+assignmentPattern left right =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm left)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm right)}]}))++-- | DSL name token for hydra.typescript.syntax.AssignmentPattern+assignmentPatternAssignmentPattern :: Typed.TypedName Syntax.AssignmentPattern+assignmentPatternAssignmentPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.AssignmentPattern")++-- | DSL accessor for the left field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern+assignmentPatternLeft x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression+assignmentPatternRight x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the left field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternWithLeft :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.AssignmentPattern+assignmentPatternWithLeft original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.AssignmentPattern+assignmentPatternWithRight :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssignmentPattern+assignmentPatternWithRight original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.AssignmentPattern"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.BinaryExpression+binaryExpression :: Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpression operator left right =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Typed.unTypedTerm operator)},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm left)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm right)}]}))++-- | DSL name token for hydra.typescript.syntax.BinaryExpression+binaryExpressionBinaryExpression :: Typed.TypedName Syntax.BinaryExpression+binaryExpressionBinaryExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.BinaryExpression")++-- | DSL accessor for the left field of hydra.typescript.syntax.BinaryExpression+binaryExpressionLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression+binaryExpressionLeft x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.typescript.syntax.BinaryExpression+binaryExpressionOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator+binaryExpressionOperator x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.BinaryExpression+binaryExpressionRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression+binaryExpressionRight x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the left field of hydra.typescript.syntax.BinaryExpression+binaryExpressionWithLeft :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpressionWithLeft original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.typescript.syntax.BinaryExpression+binaryExpressionWithOperator :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.BinaryOperator -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpressionWithOperator original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.BinaryExpression+binaryExpressionWithRight :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.BinaryExpression+binaryExpressionWithRight original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryExpression"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the add variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorAdd :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorAdd =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "add"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the and variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorAnd :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorAnd =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "and"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.BinaryOperator+binaryOperatorBinaryOperator :: Typed.TypedName Syntax.BinaryOperator+binaryOperatorBinaryOperator = Typed.TypedName (Model.Name "hydra.typescript.syntax.BinaryOperator")++-- | DSL injection for the bitwiseAnd variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorBitwiseAnd :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorBitwiseAnd =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bitwiseAnd"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseOr variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorBitwiseOr :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorBitwiseOr =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bitwiseOr"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the bitwiseXor variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorBitwiseXor :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorBitwiseXor =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bitwiseXor"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the divide variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorDivide :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorDivide =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "divide"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the equal variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorEqual =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "equal"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the exponentiate variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorExponentiate :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorExponentiate =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "exponentiate"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the greaterThan variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorGreaterThan :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorGreaterThan =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "greaterThan"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the greaterThanOrEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorGreaterThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorGreaterThanOrEqual =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "greaterThanOrEqual"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the in variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorIn :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorIn =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "in"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the instanceof variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorInstanceof :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorInstanceof =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "instanceof"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the leftShift variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorLeftShift :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorLeftShift =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "leftShift"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the lessThan variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorLessThan :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorLessThan =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "lessThan"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the lessThanOrEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorLessThanOrEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorLessThanOrEqual =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "lessThanOrEqual"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the modulo variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorModulo :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorModulo =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "modulo"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the multiply variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorMultiply :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorMultiply =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "multiply"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the notEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorNotEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorNotEqual =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "notEqual"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the nullishCoalescing variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorNullishCoalescing :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorNullishCoalescing =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "nullishCoalescing"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the or variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorOr :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorOr =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "or"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the rightShift variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorRightShift :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorRightShift =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "rightShift"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorStrictEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorStrictEqual =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "strictEqual"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictNotEqual variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorStrictNotEqual :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorStrictNotEqual =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "strictNotEqual"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the subtract variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorSubtract :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorSubtract =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "subtract"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the unsignedRightShift variant of hydra.typescript.syntax.BinaryOperator+binaryOperatorUnsignedRightShift :: Typed.TypedTerm Syntax.BinaryOperator+binaryOperatorUnsignedRightShift =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.BinaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "unsignedRightShift"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.CallExpression+callExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression+callExpression callee arguments optional =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "callee"),+ Model.fieldTerm = (Typed.unTypedTerm callee)},+ Model.Field {+ Model.fieldName = (Model.Name "arguments"),+ Model.fieldTerm = (Typed.unTypedTerm arguments)},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Typed.unTypedTerm optional)}]}))++-- | DSL accessor for the arguments field of hydra.typescript.syntax.CallExpression+callExpressionArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression]+callExpressionArguments x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "arguments")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.CallExpression+callExpressionCallExpression :: Typed.TypedName Syntax.CallExpression+callExpressionCallExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.CallExpression")++-- | DSL accessor for the callee field of hydra.typescript.syntax.CallExpression+callExpressionCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression+callExpressionCallee x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "callee")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the optional field of hydra.typescript.syntax.CallExpression+callExpressionOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool+callExpressionOptional x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the arguments field of hydra.typescript.syntax.CallExpression+callExpressionWithArguments :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.CallExpression+callExpressionWithArguments original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "callee"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "callee")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "arguments"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the callee field of hydra.typescript.syntax.CallExpression+callExpressionWithCallee :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.CallExpression+callExpressionWithCallee original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "callee"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "arguments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "arguments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the optional field of hydra.typescript.syntax.CallExpression+callExpressionWithOptional :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.CallExpression+callExpressionWithOptional original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "callee"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "callee")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "arguments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CallExpression"),+ Model.projectionFieldName = (Model.Name "arguments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.CatchClause+catchClause :: Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause+catchClause param body =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "param"),+ Model.fieldTerm = (Typed.unTypedTerm param)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.CatchClause+catchClauseBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement+catchClauseBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.CatchClause+catchClauseCatchClause :: Typed.TypedName Syntax.CatchClause+catchClauseCatchClause = Typed.TypedName (Model.Name "hydra.typescript.syntax.CatchClause")++-- | DSL accessor for the param field of hydra.typescript.syntax.CatchClause+catchClauseParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern)+catchClauseParam x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+ Model.projectionFieldName = (Model.Name "param")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.CatchClause+catchClauseWithBody :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.CatchClause+catchClauseWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "param"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+ Model.projectionFieldName = (Model.Name "param")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the param field of hydra.typescript.syntax.CatchClause+catchClauseWithParam :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.Pattern) -> Typed.TypedTerm Syntax.CatchClause+catchClauseWithParam original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "param"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.CatchClause"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.ClassDeclaration+classDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclaration id superClass body =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm id)},+ Model.Field {+ Model.fieldName = (Model.Name "superClass"),+ Model.fieldTerm = (Typed.unTypedTerm superClass)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ClassDeclaration+classDeclarationBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody+classDeclarationBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ClassDeclaration+classDeclarationClassDeclaration :: Typed.TypedName Syntax.ClassDeclaration+classDeclarationClassDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ClassDeclaration")++-- | DSL accessor for the id field of hydra.typescript.syntax.ClassDeclaration+classDeclarationId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier+classDeclarationId x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the superClass field of hydra.typescript.syntax.ClassDeclaration+classDeclarationSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression)+classDeclarationSuperClass x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "superClass")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ClassDeclaration+classDeclarationWithBody :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "superClass"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "superClass")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithComments :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments+classDeclarationWithComments body comments =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithCommentsBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsClassDeclarationWithComments :: Typed.TypedName Syntax.ClassDeclarationWithComments+classDeclarationWithCommentsClassDeclarationWithComments =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments")++-- | DSL accessor for the comments field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+classDeclarationWithCommentsComments x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.ClassDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ClassDeclarationWithComments+classDeclarationWithCommentsWithComments original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the id field of hydra.typescript.syntax.ClassDeclaration+classDeclarationWithId :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithId original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "superClass"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "superClass")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the superClass field of hydra.typescript.syntax.ClassDeclaration+classDeclarationWithSuperClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationWithSuperClass original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "superClass"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ClassDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the block variant of hydra.typescript.syntax.Comment+commentBlock :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment+commentBlock x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Comment"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "block"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Comment+commentComment :: Typed.TypedName Syntax.Comment+commentComment = Typed.TypedName (Model.Name "hydra.typescript.syntax.Comment")++-- | DSL injection for the documentation variant of hydra.typescript.syntax.Comment+commentDocumentation :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm Syntax.Comment+commentDocumentation x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Comment"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "documentation"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the line variant of hydra.typescript.syntax.Comment+commentLine :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Comment+commentLine x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Comment"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "line"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ConditionalExpression+conditionalExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpression test consequent alternate =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm test)},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Typed.unTypedTerm consequent)},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Typed.unTypedTerm alternate)}]}))++-- | DSL accessor for the alternate field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+conditionalExpressionAlternate x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "alternate")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ConditionalExpression+conditionalExpressionConditionalExpression :: Typed.TypedName Syntax.ConditionalExpression+conditionalExpressionConditionalExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.ConditionalExpression")++-- | DSL accessor for the consequent field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+conditionalExpressionConsequent x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the test field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+conditionalExpressionTest x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the alternate field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionWithAlternate :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionWithAlternate original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the consequent field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionWithConsequent :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionWithConsequent original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "alternate")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.ConditionalExpression+conditionalExpressionWithTest :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionWithTest original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ConditionalExpression"),+ Model.projectionFieldName = (Model.Name "alternate")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.DoWhileStatement+doWhileStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement+doWhileStatement body test =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm test)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement+doWhileStatementBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.DoWhileStatement+doWhileStatementDoWhileStatement :: Typed.TypedName Syntax.DoWhileStatement+doWhileStatementDoWhileStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.DoWhileStatement")++-- | DSL accessor for the test field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression+doWhileStatementTest x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementWithBody :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.DoWhileStatement+doWhileStatementWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.DoWhileStatement+doWhileStatementWithTest :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoWhileStatement+doWhileStatementWithTest original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DoWhileStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.DocumentationComment+documentationComment :: Typed.TypedTerm String -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment+documentationComment description tags =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Typed.unTypedTerm description)},+ Model.Field {+ Model.fieldName = (Model.Name "tags"),+ Model.fieldTerm = (Typed.unTypedTerm tags)}]}))++-- | DSL accessor for the description field of hydra.typescript.syntax.DocumentationComment+documentationCommentDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String+documentationCommentDescription x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+ Model.projectionFieldName = (Model.Name "description")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.DocumentationComment+documentationCommentDocumentationComment :: Typed.TypedName Syntax.DocumentationComment+documentationCommentDocumentationComment = Typed.TypedName (Model.Name "hydra.typescript.syntax.DocumentationComment")++-- | DSL accessor for the tags field of hydra.typescript.syntax.DocumentationComment+documentationCommentTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag]+documentationCommentTags x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+ Model.projectionFieldName = (Model.Name "tags")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the description field of hydra.typescript.syntax.DocumentationComment+documentationCommentWithDescription :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationComment+documentationCommentWithDescription original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "tags"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+ Model.projectionFieldName = (Model.Name "tags")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the tags field of hydra.typescript.syntax.DocumentationComment+documentationCommentWithTags :: Typed.TypedTerm Syntax.DocumentationComment -> Typed.TypedTerm [Syntax.DocumentationTag] -> Typed.TypedTerm Syntax.DocumentationComment+documentationCommentWithTags original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationComment"),+ Model.projectionFieldName = (Model.Name "description")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "tags"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.DocumentationTag+documentationTag :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag+documentationTag name type_ paramName description =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm name)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm type_)},+ Model.Field {+ Model.fieldName = (Model.Name "paramName"),+ Model.fieldTerm = (Typed.unTypedTerm paramName)},+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Typed.unTypedTerm description)}]}))++-- | DSL accessor for the description field of hydra.typescript.syntax.DocumentationTag+documentationTagDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String+documentationTagDescription x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "description")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.DocumentationTag+documentationTagDocumentationTag :: Typed.TypedName Syntax.DocumentationTag+documentationTagDocumentationTag = Typed.TypedName (Model.Name "hydra.typescript.syntax.DocumentationTag")++-- | DSL accessor for the name field of hydra.typescript.syntax.DocumentationTag+documentationTagName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String+documentationTagName x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the paramName field of hydra.typescript.syntax.DocumentationTag+documentationTagParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier)+documentationTagParamName x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "paramName")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.DocumentationTag+documentationTagType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression)+documentationTagType x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the description field of hydra.typescript.syntax.DocumentationTag+documentationTagWithDescription :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithDescription original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "paramName"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "paramName")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.DocumentationTag+documentationTagWithName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithName original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "paramName"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "paramName")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "description")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the paramName field of hydra.typescript.syntax.DocumentationTag+documentationTagWithParamName :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithParamName original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "paramName"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "description")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.DocumentationTag+documentationTagWithType :: Typed.TypedTerm Syntax.DocumentationTag -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.DocumentationTag+documentationTagWithType original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "paramName"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "paramName")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "description"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.DocumentationTag"),+ Model.projectionFieldName = (Model.Name "description")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclaration :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration+exportAllDeclaration exported source =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "exported"),+ Model.fieldTerm = (Typed.unTypedTerm exported)},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Typed.unTypedTerm source)}]}))++-- | DSL name token for hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationExportAllDeclaration :: Typed.TypedName Syntax.ExportAllDeclaration+exportAllDeclarationExportAllDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ExportAllDeclaration")++-- | DSL accessor for the exported field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier)+exportAllDeclarationExported x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+ Model.projectionFieldName = (Model.Name "exported")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the source field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral+exportAllDeclarationSource x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+ Model.projectionFieldName = (Model.Name "source")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the exported field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationWithExported :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ExportAllDeclaration+exportAllDeclarationWithExported original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "exported"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+ Model.projectionFieldName = (Model.Name "source")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the source field of hydra.typescript.syntax.ExportAllDeclaration+exportAllDeclarationWithSource :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ExportAllDeclaration+exportAllDeclarationWithSource original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "exported"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportAllDeclaration"),+ Model.projectionFieldName = (Model.Name "exported")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the all variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationAll :: Typed.TypedTerm Syntax.ExportAllDeclaration -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationAll x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "all"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the declaration variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationDeclaration :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationDeclaration x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "declaration"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the default variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationDefault :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationDefault x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "default"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ExportDeclaration+exportDeclarationExportDeclaration :: Typed.TypedName Syntax.ExportDeclaration+exportDeclarationExportDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ExportDeclaration")++-- | DSL injection for the named variant of hydra.typescript.syntax.ExportDeclaration+exportDeclarationNamed :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm Syntax.ExportDeclaration+exportDeclarationNamed x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ExportDeclaration"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "named"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ExportSpecifier+exportSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier+exportSpecifier local exported =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "local"),+ Model.fieldTerm = (Typed.unTypedTerm local)},+ Model.Field {+ Model.fieldName = (Model.Name "exported"),+ Model.fieldTerm = (Typed.unTypedTerm exported)}]}))++-- | DSL name token for hydra.typescript.syntax.ExportSpecifier+exportSpecifierExportSpecifier :: Typed.TypedName Syntax.ExportSpecifier+exportSpecifierExportSpecifier = Typed.TypedName (Model.Name "hydra.typescript.syntax.ExportSpecifier")++-- | DSL accessor for the exported field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier+exportSpecifierExported x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+ Model.projectionFieldName = (Model.Name "exported")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the local field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier+exportSpecifierLocal x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+ Model.projectionFieldName = (Model.Name "local")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the exported field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierWithExported :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier+exportSpecifierWithExported original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "local"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+ Model.projectionFieldName = (Model.Name "local")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "exported"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the local field of hydra.typescript.syntax.ExportSpecifier+exportSpecifierWithLocal :: Typed.TypedTerm Syntax.ExportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExportSpecifier+exportSpecifierWithLocal original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "local"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "exported"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ExportSpecifier"),+ Model.projectionFieldName = (Model.Name "exported")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the array variant of hydra.typescript.syntax.Expression+expressionArray :: Typed.TypedTerm Syntax.ArrayExpression -> Typed.TypedTerm Syntax.Expression+expressionArray x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "array"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the arrow variant of hydra.typescript.syntax.Expression+expressionArrow :: Typed.TypedTerm Syntax.ArrowFunctionExpression -> Typed.TypedTerm Syntax.Expression+expressionArrow x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "arrow"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the asExpression variant of hydra.typescript.syntax.Expression+expressionAsExpression :: Typed.TypedTerm Syntax.AsExpression -> Typed.TypedTerm Syntax.Expression+expressionAsExpression x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "asExpression"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the assignment variant of hydra.typescript.syntax.Expression+expressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression+expressionAssignment x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "assignment"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the await variant of hydra.typescript.syntax.Expression+expressionAwait :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression+expressionAwait x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "await"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the binary variant of hydra.typescript.syntax.Expression+expressionBinary :: Typed.TypedTerm Syntax.BinaryExpression -> Typed.TypedTerm Syntax.Expression+expressionBinary x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "binary"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the call variant of hydra.typescript.syntax.Expression+expressionCall :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression+expressionCall x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "call"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the conditional variant of hydra.typescript.syntax.Expression+expressionConditional :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.Expression+expressionConditional x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "conditional"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Expression+expressionExpression :: Typed.TypedName Syntax.Expression+expressionExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.Expression")++-- | DSL injection for the function variant of hydra.typescript.syntax.Expression+expressionFunction :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.Expression+expressionFunction x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "function"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the identifier variant of hydra.typescript.syntax.Expression+expressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Expression+expressionIdentifier x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "identifier"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.typescript.syntax.Expression+expressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Expression+expressionLiteral x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "literal"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the member variant of hydra.typescript.syntax.Expression+expressionMember :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression+expressionMember x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "member"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the new variant of hydra.typescript.syntax.Expression+expressionNew :: Typed.TypedTerm Syntax.CallExpression -> Typed.TypedTerm Syntax.Expression+expressionNew x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "new"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the object variant of hydra.typescript.syntax.Expression+expressionObject :: Typed.TypedTerm Syntax.ObjectExpression -> Typed.TypedTerm Syntax.Expression+expressionObject x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the parenthesized variant of hydra.typescript.syntax.Expression+expressionParenthesized :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression+expressionParenthesized x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "parenthesized"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the sequence variant of hydra.typescript.syntax.Expression+expressionSequence :: Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.Expression+expressionSequence x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "sequence"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the spread variant of hydra.typescript.syntax.Expression+expressionSpread :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression+expressionSpread x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "spread"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the this variant of hydra.typescript.syntax.Expression+expressionThis :: Typed.TypedTerm Syntax.Expression+expressionThis =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "this"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the unary variant of hydra.typescript.syntax.Expression+expressionUnary :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression+expressionUnary x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "unary"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the yield variant of hydra.typescript.syntax.Expression+expressionYield :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Expression+expressionYield x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Expression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "yield"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ForInLeft+forInLeftForInLeft :: Typed.TypedName Syntax.ForInLeft+forInLeftForInLeft = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForInLeft")++-- | DSL injection for the pattern variant of hydra.typescript.syntax.ForInLeft+forInLeftPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.ForInLeft+forInLeftPattern x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInLeft"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "pattern"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variable variant of hydra.typescript.syntax.ForInLeft+forInLeftVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInLeft+forInLeftVariable x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInLeft"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "variable"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ForInStatement+forInStatement :: Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement+forInStatement left right body =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm left)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm right)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ForInStatement+forInStatementBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement+forInStatementBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ForInStatement+forInStatementForInStatement :: Typed.TypedName Syntax.ForInStatement+forInStatementForInStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForInStatement")++-- | DSL accessor for the left field of hydra.typescript.syntax.ForInStatement+forInStatementLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft+forInStatementLeft x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.ForInStatement+forInStatementRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression+forInStatementRight x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ForInStatement+forInStatementWithBody :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForInStatement+forInStatementWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the left field of hydra.typescript.syntax.ForInStatement+forInStatementWithLeft :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForInStatement+forInStatementWithLeft original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.ForInStatement+forInStatementWithRight :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInStatement+forInStatementWithRight original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForInStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the expression variant of hydra.typescript.syntax.ForInit+forInitExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForInit+forInitExpression x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInit"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "expression"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ForInit+forInitForInit :: Typed.TypedName Syntax.ForInit+forInitForInit = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForInit")++-- | DSL injection for the variable variant of hydra.typescript.syntax.ForInit+forInitVariable :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.ForInit+forInitVariable x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ForInit"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "variable"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ForOfStatement+forOfStatement :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatement await left right body =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "await"),+ Model.fieldTerm = (Typed.unTypedTerm await)},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm left)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm right)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the await field of hydra.typescript.syntax.ForOfStatement+forOfStatementAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool+forOfStatementAwait x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "await")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ForOfStatement+forOfStatementBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement+forOfStatementBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ForOfStatement+forOfStatementForOfStatement :: Typed.TypedName Syntax.ForOfStatement+forOfStatementForOfStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForOfStatement")++-- | DSL accessor for the left field of hydra.typescript.syntax.ForOfStatement+forOfStatementLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft+forOfStatementLeft x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the right field of hydra.typescript.syntax.ForOfStatement+forOfStatementRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression+forOfStatementRight x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the await field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithAwait :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithAwait original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "await"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithBody :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "await"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "await")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the left field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithLeft :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.ForInLeft -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithLeft original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "await"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "await")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "right")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the right field of hydra.typescript.syntax.ForOfStatement+forOfStatementWithRight :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ForOfStatement+forOfStatementWithRight original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "await"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "await")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "left"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "left")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "right"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForOfStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.ForStatement+forStatement :: Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement+forStatement init test update body =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Typed.unTypedTerm init)},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm test)},+ Model.Field {+ Model.fieldName = (Model.Name "update"),+ Model.fieldTerm = (Typed.unTypedTerm update)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ForStatement+forStatementBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement+forStatementBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ForStatement+forStatementForStatement :: Typed.TypedName Syntax.ForStatement+forStatementForStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ForStatement")++-- | DSL accessor for the init field of hydra.typescript.syntax.ForStatement+forStatementInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit)+forStatementInit x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "init")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the test field of hydra.typescript.syntax.ForStatement+forStatementTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)+forStatementTest x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the update field of hydra.typescript.syntax.ForStatement+forStatementUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression)+forStatementUpdate x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "update")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.ForStatement+forStatementWithBody :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ForStatement+forStatementWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "init")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "update"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "update")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the init field of hydra.typescript.syntax.ForStatement+forStatementWithInit :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm Syntax.ForStatement+forStatementWithInit original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "update"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "update")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.ForStatement+forStatementWithTest :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement+forStatementWithTest original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "init")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "update"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "update")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the update field of hydra.typescript.syntax.ForStatement+forStatementWithUpdate :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForStatement+forStatementWithUpdate original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "init")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "update"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ForStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionDeclaration+functionDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclaration id params body async generator =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm id)},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Typed.unTypedTerm params)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Typed.unTypedTerm async)},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Typed.unTypedTerm generator)}]}))++-- | DSL accessor for the async field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool+functionDeclarationAsync x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement+functionDeclarationBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.FunctionDeclaration+functionDeclarationFunctionDeclaration :: Typed.TypedName Syntax.FunctionDeclaration+functionDeclarationFunctionDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionDeclaration")++-- | DSL accessor for the generator field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool+functionDeclarationGenerator x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the id field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier+functionDeclarationId x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the params field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern]+functionDeclarationParams x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the async field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithAsync :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithAsync original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithBody :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithComments :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments+functionDeclarationWithComments body comments =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithCommentsBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+functionDeclarationWithCommentsComments x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsFunctionDeclarationWithComments :: Typed.TypedName Syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsFunctionDeclarationWithComments =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments")++-- | DSL updater for the body field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithBody :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.FunctionDeclarationWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.FunctionDeclarationWithComments+functionDeclarationWithCommentsWithComments original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the generator field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithGenerator :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithGenerator original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the id field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithId :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithId original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the params field of hydra.typescript.syntax.FunctionDeclaration+functionDeclarationWithParams :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionDeclaration+functionDeclarationWithParams original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionDeclaration"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionExpression+functionExpression :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression+functionExpression id params body async generator =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm id)},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Typed.unTypedTerm params)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Typed.unTypedTerm async)},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Typed.unTypedTerm generator)}]}))++-- | DSL accessor for the async field of hydra.typescript.syntax.FunctionExpression+functionExpressionAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool+functionExpressionAsync x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.typescript.syntax.FunctionExpression+functionExpressionBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement+functionExpressionBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.FunctionExpression+functionExpressionFunctionExpression :: Typed.TypedName Syntax.FunctionExpression+functionExpressionFunctionExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionExpression")++-- | DSL accessor for the generator field of hydra.typescript.syntax.FunctionExpression+functionExpressionGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool+functionExpressionGenerator x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the id field of hydra.typescript.syntax.FunctionExpression+functionExpressionId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier)+functionExpressionId x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the params field of hydra.typescript.syntax.FunctionExpression+functionExpressionParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern]+functionExpressionParams x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the async field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithAsync :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithAsync original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithBody :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the generator field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithGenerator :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithGenerator original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the id field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithId :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithId original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "params")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the params field of hydra.typescript.syntax.FunctionExpression+functionExpressionWithParams :: Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.FunctionExpression+functionExpressionWithParams original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "params"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "async"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "async")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "generator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionExpression"),+ Model.projectionFieldName = (Model.Name "generator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpression :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpression typeParameters parameters returnType =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Typed.unTypedTerm typeParameters)},+ Model.Field {+ Model.fieldName = (Model.Name "parameters"),+ Model.fieldTerm = (Typed.unTypedTerm parameters)},+ Model.Field {+ Model.fieldName = (Model.Name "returnType"),+ Model.fieldTerm = (Typed.unTypedTerm returnType)}]}))++-- | DSL name token for hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionFunctionTypeExpression :: Typed.TypedName Syntax.FunctionTypeExpression+functionTypeExpressionFunctionTypeExpression =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.FunctionTypeExpression")++-- | DSL accessor for the parameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]+functionTypeExpressionParameters x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "parameters")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the returnType field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+functionTypeExpressionReturnType x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "returnType")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeParameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter]+functionTypeExpressionTypeParameters x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the parameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionWithParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpressionWithParameters original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "parameters"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "returnType"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "returnType")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the returnType field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionWithReturnType :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpressionWithReturnType original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "parameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "parameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "returnType"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeParameters field of hydra.typescript.syntax.FunctionTypeExpression+functionTypeExpressionWithTypeParameters :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.FunctionTypeExpression+functionTypeExpressionWithTypeParameters original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "parameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "parameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "returnType"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.FunctionTypeExpression"),+ Model.projectionFieldName = (Model.Name "returnType")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.Identifier wrapper+identifier :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Identifier+identifier x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.Identifier"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.Identifier+identifierIdentifier :: Typed.TypedName Syntax.Identifier+identifierIdentifier = Typed.TypedName (Model.Name "hydra.typescript.syntax.Identifier")++-- | DSL constructor for hydra.typescript.syntax.IfStatement+ifStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement+ifStatement test consequent alternate =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm test)},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Typed.unTypedTerm consequent)},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Typed.unTypedTerm alternate)}]}))++-- | DSL accessor for the alternate field of hydra.typescript.syntax.IfStatement+ifStatementAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement)+ifStatementAlternate x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "alternate")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the consequent field of hydra.typescript.syntax.IfStatement+ifStatementConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement+ifStatementConsequent x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.IfStatement+ifStatementIfStatement :: Typed.TypedName Syntax.IfStatement+ifStatementIfStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.IfStatement")++-- | DSL accessor for the test field of hydra.typescript.syntax.IfStatement+ifStatementTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression+ifStatementTest x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the alternate field of hydra.typescript.syntax.IfStatement+ifStatementWithAlternate :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm (Maybe Syntax.Statement) -> Typed.TypedTerm Syntax.IfStatement+ifStatementWithAlternate original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the consequent field of hydra.typescript.syntax.IfStatement+ifStatementWithConsequent :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfStatement+ifStatementWithConsequent original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "alternate")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.IfStatement+ifStatementWithTest :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfStatement+ifStatementWithTest original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "alternate"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.IfStatement"),+ Model.projectionFieldName = (Model.Name "alternate")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the default variant of hydra.typescript.syntax.ImportClause+importClauseDefault :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.ImportClause+importClauseDefault x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ImportClause"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "default"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ImportClause+importClauseImportClause :: Typed.TypedName Syntax.ImportClause+importClauseImportClause = Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportClause")++-- | DSL injection for the named variant of hydra.typescript.syntax.ImportClause+importClauseNamed :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.ImportClause+importClauseNamed x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ImportClause"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "named"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the namespace variant of hydra.typescript.syntax.ImportClause+importClauseNamespace :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.ImportClause+importClauseNamespace x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ImportClause"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "namespace"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ImportDeclaration+importDeclaration :: Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclaration specifiers source =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "specifiers"),+ Model.fieldTerm = (Typed.unTypedTerm specifiers)},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Typed.unTypedTerm source)}]}))++-- | DSL name token for hydra.typescript.syntax.ImportDeclaration+importDeclarationImportDeclaration :: Typed.TypedName Syntax.ImportDeclaration+importDeclarationImportDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportDeclaration")++-- | DSL accessor for the source field of hydra.typescript.syntax.ImportDeclaration+importDeclarationSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral+importDeclarationSource x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+ Model.projectionFieldName = (Model.Name "source")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the specifiers field of hydra.typescript.syntax.ImportDeclaration+importDeclarationSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause]+importDeclarationSpecifiers x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+ Model.projectionFieldName = (Model.Name "specifiers")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the source field of hydra.typescript.syntax.ImportDeclaration+importDeclarationWithSource :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationWithSource original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "specifiers"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+ Model.projectionFieldName = (Model.Name "specifiers")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the specifiers field of hydra.typescript.syntax.ImportDeclaration+importDeclarationWithSpecifiers :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm [Syntax.ImportClause] -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationWithSpecifiers original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "specifiers"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportDeclaration"),+ Model.projectionFieldName = (Model.Name "source")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.ImportDefaultSpecifier wrapper+importDefaultSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportDefaultSpecifier+importDefaultSpecifier x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ImportDefaultSpecifier+importDefaultSpecifierImportDefaultSpecifier :: Typed.TypedName Syntax.ImportDefaultSpecifier+importDefaultSpecifierImportDefaultSpecifier =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier")++-- | DSL constructor for the hydra.typescript.syntax.ImportNamespaceSpecifier wrapper+importNamespaceSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportNamespaceSpecifier+importNamespaceSpecifier x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ImportNamespaceSpecifier+importNamespaceSpecifierImportNamespaceSpecifier :: Typed.TypedName Syntax.ImportNamespaceSpecifier+importNamespaceSpecifierImportNamespaceSpecifier =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier")++-- | DSL constructor for hydra.typescript.syntax.ImportSpecifier+importSpecifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier+importSpecifier imported local =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "imported"),+ Model.fieldTerm = (Typed.unTypedTerm imported)},+ Model.Field {+ Model.fieldName = (Model.Name "local"),+ Model.fieldTerm = (Typed.unTypedTerm local)}]}))++-- | DSL name token for hydra.typescript.syntax.ImportSpecifier+importSpecifierImportSpecifier :: Typed.TypedName Syntax.ImportSpecifier+importSpecifierImportSpecifier = Typed.TypedName (Model.Name "hydra.typescript.syntax.ImportSpecifier")++-- | DSL accessor for the imported field of hydra.typescript.syntax.ImportSpecifier+importSpecifierImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier+importSpecifierImported x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+ Model.projectionFieldName = (Model.Name "imported")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the local field of hydra.typescript.syntax.ImportSpecifier+importSpecifierLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier+importSpecifierLocal x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+ Model.projectionFieldName = (Model.Name "local")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the imported field of hydra.typescript.syntax.ImportSpecifier+importSpecifierWithImported :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier+importSpecifierWithImported original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "imported"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "local"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+ Model.projectionFieldName = (Model.Name "local")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the local field of hydra.typescript.syntax.ImportSpecifier+importSpecifierWithLocal :: Typed.TypedTerm Syntax.ImportSpecifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ImportSpecifier+importSpecifierWithLocal original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "imported"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ImportSpecifier"),+ Model.projectionFieldName = (Model.Name "imported")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "local"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclaration name typeParameters extends members =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm name)},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Typed.unTypedTerm typeParameters)},+ Model.Field {+ Model.fieldName = (Model.Name "extends"),+ Model.fieldTerm = (Typed.unTypedTerm extends)},+ Model.Field {+ Model.fieldName = (Model.Name "members"),+ Model.fieldTerm = (Typed.unTypedTerm members)}]}))++-- | DSL accessor for the extends field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression]+interfaceDeclarationExtends x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "extends")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationInterfaceDeclaration :: Typed.TypedName Syntax.InterfaceDeclaration+interfaceDeclarationInterfaceDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.InterfaceDeclaration")++-- | DSL accessor for the members field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature]+interfaceDeclarationMembers x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "members")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier+interfaceDeclarationName x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeParameters field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]+interfaceDeclarationTypeParameters x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the extends field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithExtends :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithExtends original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "extends"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "members"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "members")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the members field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithMembers :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.PropertySignature] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithMembers original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "extends"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "extends")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "members"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithName :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithName original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "extends"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "extends")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "members"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "members")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeParameters field of hydra.typescript.syntax.InterfaceDeclaration+interfaceDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationWithTypeParameters original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "extends"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "extends")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "members"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.InterfaceDeclaration"),+ Model.projectionFieldName = (Model.Name "members")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.LabeledStatement+labeledStatement :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatement label body =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "label"),+ Model.fieldTerm = (Typed.unTypedTerm label)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.LabeledStatement+labeledStatementBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement+labeledStatementBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the label field of hydra.typescript.syntax.LabeledStatement+labeledStatementLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier+labeledStatementLabel x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+ Model.projectionFieldName = (Model.Name "label")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.LabeledStatement+labeledStatementLabeledStatement :: Typed.TypedName Syntax.LabeledStatement+labeledStatementLabeledStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.LabeledStatement")++-- | DSL updater for the body field of hydra.typescript.syntax.LabeledStatement+labeledStatementWithBody :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatementWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "label"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+ Model.projectionFieldName = (Model.Name "label")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the label field of hydra.typescript.syntax.LabeledStatement+labeledStatementWithLabel :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatementWithLabel original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "label"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.LabeledStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the bigInt variant of hydra.typescript.syntax.Literal+literalBigInt :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.Literal+literalBigInt x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bigInt"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the boolean variant of hydra.typescript.syntax.Literal+literalBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Literal+literalBoolean x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "boolean"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Literal+literalLiteral :: Typed.TypedName Syntax.Literal+literalLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.Literal")++-- | DSL injection for the null variant of hydra.typescript.syntax.Literal+literalNull :: Typed.TypedTerm Syntax.Literal+literalNull =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "null"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the number variant of hydra.typescript.syntax.Literal+literalNumber :: Typed.TypedTerm Syntax.NumericLiteral -> Typed.TypedTerm Syntax.Literal+literalNumber x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "number"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the string variant of hydra.typescript.syntax.Literal+literalString :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.Literal+literalString x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "string"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the template variant of hydra.typescript.syntax.Literal+literalTemplate :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm Syntax.Literal+literalTemplate x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "template"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the undefined variant of hydra.typescript.syntax.Literal+literalUndefined :: Typed.TypedTerm Syntax.Literal+literalUndefined =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Literal"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "undefined"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.MemberExpression+memberExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression+memberExpression object property computed optional =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Typed.unTypedTerm object)},+ Model.Field {+ Model.fieldName = (Model.Name "property"),+ Model.fieldTerm = (Typed.unTypedTerm property)},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Typed.unTypedTerm computed)},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Typed.unTypedTerm optional)}]}))++-- | DSL accessor for the computed field of hydra.typescript.syntax.MemberExpression+memberExpressionComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool+memberExpressionComputed x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.MemberExpression+memberExpressionMemberExpression :: Typed.TypedName Syntax.MemberExpression+memberExpressionMemberExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.MemberExpression")++-- | DSL accessor for the object field of hydra.typescript.syntax.MemberExpression+memberExpressionObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression+memberExpressionObject x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "object")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the optional field of hydra.typescript.syntax.MemberExpression+memberExpressionOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool+memberExpressionOptional x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the property field of hydra.typescript.syntax.MemberExpression+memberExpressionProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression+memberExpressionProperty x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "property")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the computed field of hydra.typescript.syntax.MemberExpression+memberExpressionWithComputed :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithComputed original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "object")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "property"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "property")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the object field of hydra.typescript.syntax.MemberExpression+memberExpressionWithObject :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithObject original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "property"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "property")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the optional field of hydra.typescript.syntax.MemberExpression+memberExpressionWithOptional :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithOptional original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "object")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "property"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "property")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the property field of hydra.typescript.syntax.MemberExpression+memberExpressionWithProperty :: Typed.TypedTerm Syntax.MemberExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MemberExpression+memberExpressionWithProperty original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "object")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "property"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MemberExpression"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.MethodDefinition+methodDefinition :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinition key value kind computed static =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Typed.unTypedTerm key)},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm value)},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Typed.unTypedTerm kind)},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Typed.unTypedTerm computed)},+ Model.Field {+ Model.fieldName = (Model.Name "static"),+ Model.fieldTerm = (Typed.unTypedTerm static)}]}))++-- | DSL accessor for the computed field of hydra.typescript.syntax.MethodDefinition+methodDefinitionComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool+methodDefinitionComputed x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the key field of hydra.typescript.syntax.MethodDefinition+methodDefinitionKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression+methodDefinitionKey x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the kind field of hydra.typescript.syntax.MethodDefinition+methodDefinitionKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind+methodDefinitionKind x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.MethodDefinition+methodDefinitionMethodDefinition :: Typed.TypedName Syntax.MethodDefinition+methodDefinitionMethodDefinition = Typed.TypedName (Model.Name "hydra.typescript.syntax.MethodDefinition")++-- | DSL accessor for the static field of hydra.typescript.syntax.MethodDefinition+methodDefinitionStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool+methodDefinitionStatic x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "static")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the value field of hydra.typescript.syntax.MethodDefinition+methodDefinitionValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression+methodDefinitionValue x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the computed field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithComputed :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithComputed original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "static"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "static")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the key field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithKey :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithKey original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "static"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "static")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the kind field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithKind :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.MethodKind -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithKind original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "static"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "static")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the static field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithStatic :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithStatic original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "static"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.MethodDefinition+methodDefinitionWithValue :: Typed.TypedTerm Syntax.MethodDefinition -> Typed.TypedTerm Syntax.FunctionExpression -> Typed.TypedTerm Syntax.MethodDefinition+methodDefinitionWithValue original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "static"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.MethodDefinition"),+ Model.projectionFieldName = (Model.Name "static")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the constructor variant of hydra.typescript.syntax.MethodKind+methodKindConstructor :: Typed.TypedTerm Syntax.MethodKind+methodKindConstructor =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "constructor"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the get variant of hydra.typescript.syntax.MethodKind+methodKindGet :: Typed.TypedTerm Syntax.MethodKind+methodKindGet =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "get"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the method variant of hydra.typescript.syntax.MethodKind+methodKindMethod :: Typed.TypedTerm Syntax.MethodKind+methodKindMethod =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "method"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.MethodKind+methodKindMethodKind :: Typed.TypedName Syntax.MethodKind+methodKindMethodKind = Typed.TypedName (Model.Name "hydra.typescript.syntax.MethodKind")++-- | DSL injection for the set variant of hydra.typescript.syntax.MethodKind+methodKindSet :: Typed.TypedTerm Syntax.MethodKind+methodKindSet =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.MethodKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "set"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the export variant of hydra.typescript.syntax.ModuleItem+moduleItemExport :: Typed.TypedTerm Syntax.ExportDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemExport x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "export"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the import variant of hydra.typescript.syntax.ModuleItem+moduleItemImport :: Typed.TypedTerm Syntax.ImportDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemImport x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "import"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the interface variant of hydra.typescript.syntax.ModuleItem+moduleItemInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemInterface x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "interface"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.ModuleItem+moduleItemModuleItem :: Typed.TypedName Syntax.ModuleItem+moduleItemModuleItem = Typed.TypedName (Model.Name "hydra.typescript.syntax.ModuleItem")++-- | DSL injection for the statement variant of hydra.typescript.syntax.ModuleItem+moduleItemStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.ModuleItem+moduleItemStatement x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "statement"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typeAlias variant of hydra.typescript.syntax.ModuleItem+moduleItemTypeAlias :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.ModuleItem+moduleItemTypeAlias x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItem"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "typeAlias"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithComments :: Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments+moduleItemWithComments body comments =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem+moduleItemWithCommentsBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+moduleItemWithCommentsComments x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsModuleItemWithComments :: Typed.TypedName Syntax.ModuleItemWithComments+moduleItemWithCommentsModuleItemWithComments =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.ModuleItemWithComments")++-- | DSL updater for the body field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsWithBody :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm Syntax.ModuleItem -> Typed.TypedTerm Syntax.ModuleItemWithComments+moduleItemWithCommentsWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.ModuleItemWithComments+moduleItemWithCommentsWithComments :: Typed.TypedTerm Syntax.ModuleItemWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.ModuleItemWithComments+moduleItemWithCommentsWithComments original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ModuleItemWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.NamedExport+namedExport :: Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport+namedExport specifiers source =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "specifiers"),+ Model.fieldTerm = (Typed.unTypedTerm specifiers)},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Typed.unTypedTerm source)}]}))++-- | DSL name token for hydra.typescript.syntax.NamedExport+namedExportNamedExport :: Typed.TypedName Syntax.NamedExport+namedExportNamedExport = Typed.TypedName (Model.Name "hydra.typescript.syntax.NamedExport")++-- | DSL accessor for the source field of hydra.typescript.syntax.NamedExport+namedExportSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral)+namedExportSource x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+ Model.projectionFieldName = (Model.Name "source")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the specifiers field of hydra.typescript.syntax.NamedExport+namedExportSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier]+namedExportSpecifiers x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+ Model.projectionFieldName = (Model.Name "specifiers")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the source field of hydra.typescript.syntax.NamedExport+namedExportWithSource :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm (Maybe Syntax.StringLiteral) -> Typed.TypedTerm Syntax.NamedExport+namedExportWithSource original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "specifiers"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+ Model.projectionFieldName = (Model.Name "specifiers")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the specifiers field of hydra.typescript.syntax.NamedExport+namedExportWithSpecifiers :: Typed.TypedTerm Syntax.NamedExport -> Typed.TypedTerm [Syntax.ExportSpecifier] -> Typed.TypedTerm Syntax.NamedExport+namedExportWithSpecifiers original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "specifiers"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "source"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.NamedExport"),+ Model.projectionFieldName = (Model.Name "source")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the float variant of hydra.typescript.syntax.NumericLiteral+numericLiteralFloat :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.NumericLiteral+numericLiteralFloat x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.NumericLiteral"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "float"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the integer variant of hydra.typescript.syntax.NumericLiteral+numericLiteralInteger :: Typed.TypedTerm I.Int64 -> Typed.TypedTerm Syntax.NumericLiteral+numericLiteralInteger x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.NumericLiteral"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "integer"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.NumericLiteral+numericLiteralNumericLiteral :: Typed.TypedName Syntax.NumericLiteral+numericLiteralNumericLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.NumericLiteral")++-- | DSL constructor for hydra.typescript.syntax.ObjectPattern+objectPattern :: Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern+objectPattern properties =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ObjectPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "properties"),+ Model.fieldTerm = (Typed.unTypedTerm properties)}]}))++-- | DSL name token for hydra.typescript.syntax.ObjectPattern+objectPatternObjectPattern :: Typed.TypedName Syntax.ObjectPattern+objectPatternObjectPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.ObjectPattern")++-- | DSL accessor for the properties field of hydra.typescript.syntax.ObjectPattern+objectPatternProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty]+objectPatternProperties x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ObjectPattern"),+ Model.projectionFieldName = (Model.Name "properties")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ObjectPatternProperty+objectPatternPropertyObjectPatternProperty :: Typed.TypedName Syntax.ObjectPatternProperty+objectPatternPropertyObjectPatternProperty = Typed.TypedName (Model.Name "hydra.typescript.syntax.ObjectPatternProperty")++-- | DSL injection for the property variant of hydra.typescript.syntax.ObjectPatternProperty+objectPatternPropertyProperty :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.ObjectPatternProperty+objectPatternPropertyProperty x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ObjectPatternProperty"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "property"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the rest variant of hydra.typescript.syntax.ObjectPatternProperty+objectPatternPropertyRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.ObjectPatternProperty+objectPatternPropertyRest x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.ObjectPatternProperty"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "rest"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL updater for the properties field of hydra.typescript.syntax.ObjectPattern+objectPatternWithProperties :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm [Syntax.ObjectPatternProperty] -> Typed.TypedTerm Syntax.ObjectPattern+objectPatternWithProperties original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ObjectPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "properties"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpression :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression+parameterizedTypeExpression base arguments =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "base"),+ Model.fieldTerm = (Typed.unTypedTerm base)},+ Model.Field {+ Model.fieldName = (Model.Name "arguments"),+ Model.fieldTerm = (Typed.unTypedTerm arguments)}]}))++-- | DSL accessor for the arguments field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression]+parameterizedTypeExpressionArguments x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+ Model.projectionFieldName = (Model.Name "arguments")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the base field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+parameterizedTypeExpressionBase x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+ Model.projectionFieldName = (Model.Name "base")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionParameterizedTypeExpression :: Typed.TypedName Syntax.ParameterizedTypeExpression+parameterizedTypeExpressionParameterizedTypeExpression =+ Typed.TypedName (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression")++-- | DSL updater for the arguments field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithArguments :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm [Syntax.TypeExpression] -> Typed.TypedTerm Syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithArguments original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "base"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+ Model.projectionFieldName = (Model.Name "base")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "arguments"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the base field of hydra.typescript.syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithBase :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.ParameterizedTypeExpression+parameterizedTypeExpressionWithBase original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "base"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "arguments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"),+ Model.projectionFieldName = (Model.Name "arguments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the array variant of hydra.typescript.syntax.Pattern+patternArray :: Typed.TypedTerm Syntax.ArrayPattern -> Typed.TypedTerm Syntax.Pattern+patternArray x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "array"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the assignment variant of hydra.typescript.syntax.Pattern+patternAssignment :: Typed.TypedTerm Syntax.AssignmentPattern -> Typed.TypedTerm Syntax.Pattern+patternAssignment x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "assignment"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the identifier variant of hydra.typescript.syntax.Pattern+patternIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Pattern+patternIdentifier x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "identifier"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the object variant of hydra.typescript.syntax.Pattern+patternObject :: Typed.TypedTerm Syntax.ObjectPattern -> Typed.TypedTerm Syntax.Pattern+patternObject x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Pattern+patternPattern :: Typed.TypedName Syntax.Pattern+patternPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.Pattern")++-- | DSL injection for the rest variant of hydra.typescript.syntax.Pattern+patternRest :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern+patternRest x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "rest"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typed variant of hydra.typescript.syntax.Pattern+patternTyped :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern+patternTyped x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Pattern"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "typed"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.Program+program :: Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program+program body sourceType =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Program"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "sourceType"),+ Model.fieldTerm = (Typed.unTypedTerm sourceType)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.Program+programBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem]+programBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.Program+programProgram :: Typed.TypedName Syntax.Program+programProgram = Typed.TypedName (Model.Name "hydra.typescript.syntax.Program")++-- | DSL accessor for the sourceType field of hydra.typescript.syntax.Program+programSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType+programSourceType x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+ Model.projectionFieldName = (Model.Name "sourceType")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.typescript.syntax.Program+programWithBody :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm [Syntax.ModuleItem] -> Typed.TypedTerm Syntax.Program+programWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Program"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "sourceType"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+ Model.projectionFieldName = (Model.Name "sourceType")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the sourceType field of hydra.typescript.syntax.Program+programWithSourceType :: Typed.TypedTerm Syntax.Program -> Typed.TypedTerm Syntax.SourceType -> Typed.TypedTerm Syntax.Program+programWithSourceType original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Program"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Program"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "sourceType"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.Property+property :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property+property key value kind computed shorthand =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Typed.unTypedTerm key)},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm value)},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Typed.unTypedTerm kind)},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Typed.unTypedTerm computed)},+ Model.Field {+ Model.fieldName = (Model.Name "shorthand"),+ Model.fieldTerm = (Typed.unTypedTerm shorthand)}]}))++-- | DSL accessor for the computed field of hydra.typescript.syntax.Property+propertyComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool+propertyComputed x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the key field of hydra.typescript.syntax.Property+propertyKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression+propertyKey x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the kind field of hydra.typescript.syntax.Property+propertyKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind+propertyKind x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the get variant of hydra.typescript.syntax.PropertyKind+propertyKindGet :: Typed.TypedTerm Syntax.PropertyKind+propertyKindGet =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.PropertyKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "get"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the init variant of hydra.typescript.syntax.PropertyKind+propertyKindInit :: Typed.TypedTerm Syntax.PropertyKind+propertyKindInit =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.PropertyKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.PropertyKind+propertyKindPropertyKind :: Typed.TypedName Syntax.PropertyKind+propertyKindPropertyKind = Typed.TypedName (Model.Name "hydra.typescript.syntax.PropertyKind")++-- | DSL injection for the set variant of hydra.typescript.syntax.PropertyKind+propertyKindSet :: Typed.TypedTerm Syntax.PropertyKind+propertyKindSet =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.PropertyKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "set"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.Property+propertyProperty :: Typed.TypedName Syntax.Property+propertyProperty = Typed.TypedName (Model.Name "hydra.typescript.syntax.Property")++-- | DSL accessor for the shorthand field of hydra.typescript.syntax.Property+propertyShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool+propertyShorthand x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "shorthand")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.typescript.syntax.PropertySignature+propertySignature :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature+propertySignature name type_ optional readonly comments =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm name)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm type_)},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Typed.unTypedTerm optional)},+ Model.Field {+ Model.fieldName = (Model.Name "readonly"),+ Model.fieldTerm = (Typed.unTypedTerm readonly)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.PropertySignature+propertySignatureComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+propertySignatureComments x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.typescript.syntax.PropertySignature+propertySignatureName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier+propertySignatureName x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the optional field of hydra.typescript.syntax.PropertySignature+propertySignatureOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool+propertySignatureOptional x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.PropertySignature+propertySignaturePropertySignature :: Typed.TypedName Syntax.PropertySignature+propertySignaturePropertySignature = Typed.TypedName (Model.Name "hydra.typescript.syntax.PropertySignature")++-- | DSL accessor for the readonly field of hydra.typescript.syntax.PropertySignature+propertySignatureReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool+propertySignatureReadonly x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "readonly")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.PropertySignature+propertySignatureType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression+propertySignatureType x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.typescript.syntax.PropertySignature+propertySignatureWithComments :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithComments original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "readonly"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "readonly")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.PropertySignature+propertySignatureWithName :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithName original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "readonly"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "readonly")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the optional field of hydra.typescript.syntax.PropertySignature+propertySignatureWithOptional :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithOptional original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "readonly"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "readonly")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the readonly field of hydra.typescript.syntax.PropertySignature+propertySignatureWithReadonly :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithReadonly original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "readonly"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.PropertySignature+propertySignatureWithType :: Typed.TypedTerm Syntax.PropertySignature -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.PropertySignature+propertySignatureWithType original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "optional")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "readonly"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "readonly")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.PropertySignature"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL accessor for the value field of hydra.typescript.syntax.Property+propertyValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression+propertyValue x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the computed field of hydra.typescript.syntax.Property+propertyWithComputed :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property+propertyWithComputed original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "shorthand"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "shorthand")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the key field of hydra.typescript.syntax.Property+propertyWithKey :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property+propertyWithKey original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "shorthand"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "shorthand")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the kind field of hydra.typescript.syntax.Property+propertyWithKind :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.PropertyKind -> Typed.TypedTerm Syntax.Property+propertyWithKind original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "shorthand"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "shorthand")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the shorthand field of hydra.typescript.syntax.Property+propertyWithShorthand :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Property+propertyWithShorthand original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "shorthand"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.Property+propertyWithValue :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Property+propertyWithValue original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "key"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "key")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "computed"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "computed")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "shorthand"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.Property"),+ Model.projectionFieldName = (Model.Name "shorthand")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.RestElement wrapper+restElement :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.RestElement+restElement x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.RestElement"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.RestElement+restElementRestElement :: Typed.TypedName Syntax.RestElement+restElementRestElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.RestElement")++-- | DSL injection for the module variant of hydra.typescript.syntax.SourceType+sourceTypeModule :: Typed.TypedTerm Syntax.SourceType+sourceTypeModule =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.SourceType"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "module"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the script variant of hydra.typescript.syntax.SourceType+sourceTypeScript :: Typed.TypedTerm Syntax.SourceType+sourceTypeScript =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.SourceType"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "script"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.SourceType+sourceTypeSourceType :: Typed.TypedName Syntax.SourceType+sourceTypeSourceType = Typed.TypedName (Model.Name "hydra.typescript.syntax.SourceType")++-- | DSL constructor for the hydra.typescript.syntax.SpreadElement wrapper+spreadElement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SpreadElement+spreadElement x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.SpreadElement"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.SpreadElement+spreadElementSpreadElement :: Typed.TypedName Syntax.SpreadElement+spreadElementSpreadElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.SpreadElement")++-- | DSL injection for the block variant of hydra.typescript.syntax.Statement+statementBlock :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.Statement+statementBlock x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "block"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the break variant of hydra.typescript.syntax.Statement+statementBreak :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm Syntax.Statement+statementBreak x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "break"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the classDeclaration variant of hydra.typescript.syntax.Statement+statementClassDeclaration :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.Statement+statementClassDeclaration x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "classDeclaration"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the continue variant of hydra.typescript.syntax.Statement+statementContinue :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm Syntax.Statement+statementContinue x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "continue"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the debugger variant of hydra.typescript.syntax.Statement+statementDebugger :: Typed.TypedTerm Syntax.Statement+statementDebugger =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "debugger"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the doWhile variant of hydra.typescript.syntax.Statement+statementDoWhile :: Typed.TypedTerm Syntax.DoWhileStatement -> Typed.TypedTerm Syntax.Statement+statementDoWhile x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "doWhile"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the empty variant of hydra.typescript.syntax.Statement+statementEmpty :: Typed.TypedTerm Syntax.Statement+statementEmpty =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "empty"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the expression variant of hydra.typescript.syntax.Statement+statementExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement+statementExpression x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "expression"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the for variant of hydra.typescript.syntax.Statement+statementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement+statementFor x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "for"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the forIn variant of hydra.typescript.syntax.Statement+statementForIn :: Typed.TypedTerm Syntax.ForInStatement -> Typed.TypedTerm Syntax.Statement+statementForIn x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "forIn"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the forOf variant of hydra.typescript.syntax.Statement+statementForOf :: Typed.TypedTerm Syntax.ForOfStatement -> Typed.TypedTerm Syntax.Statement+statementForOf x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "forOf"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the functionDeclaration variant of hydra.typescript.syntax.Statement+statementFunctionDeclaration :: Typed.TypedTerm Syntax.FunctionDeclaration -> Typed.TypedTerm Syntax.Statement+statementFunctionDeclaration x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "functionDeclaration"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the if variant of hydra.typescript.syntax.Statement+statementIf :: Typed.TypedTerm Syntax.IfStatement -> Typed.TypedTerm Syntax.Statement+statementIf x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "if"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the labeled variant of hydra.typescript.syntax.Statement+statementLabeled :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement+statementLabeled x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "labeled"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the return variant of hydra.typescript.syntax.Statement+statementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.Statement+statementReturn x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "return"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.Statement+statementStatement :: Typed.TypedName Syntax.Statement+statementStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.Statement")++-- | DSL injection for the switch variant of hydra.typescript.syntax.Statement+statementSwitch :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Statement+statementSwitch x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "switch"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the throw variant of hydra.typescript.syntax.Statement+statementThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Statement+statementThrow x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "throw"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the try variant of hydra.typescript.syntax.Statement+statementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.Statement+statementTry x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "try"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variableDeclaration variant of hydra.typescript.syntax.Statement+statementVariableDeclaration :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.Statement+statementVariableDeclaration x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "variableDeclaration"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the while variant of hydra.typescript.syntax.Statement+statementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement+statementWhile x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.Statement"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "while"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.typescript.syntax.StatementWithComments+statementWithComments :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments+statementWithComments body comments =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement+statementWithCommentsBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the comments field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment)+statementWithCommentsComments x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.StatementWithComments+statementWithCommentsStatementWithComments :: Typed.TypedName Syntax.StatementWithComments+statementWithCommentsStatementWithComments = Typed.TypedName (Model.Name "hydra.typescript.syntax.StatementWithComments")++-- | DSL updater for the body field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsWithBody :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.StatementWithComments+statementWithCommentsWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+ Model.projectionFieldName = (Model.Name "comments")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the comments field of hydra.typescript.syntax.StatementWithComments+statementWithCommentsWithComments :: Typed.TypedTerm Syntax.StatementWithComments -> Typed.TypedTerm (Maybe Syntax.DocumentationComment) -> Typed.TypedTerm Syntax.StatementWithComments+statementWithCommentsWithComments original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StatementWithComments"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "comments"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.typescript.syntax.StringLiteral+stringLiteral :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral+stringLiteral value singleQuote =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm value)},+ Model.Field {+ Model.fieldName = (Model.Name "singleQuote"),+ Model.fieldTerm = (Typed.unTypedTerm singleQuote)}]}))++-- | DSL accessor for the singleQuote field of hydra.typescript.syntax.StringLiteral+stringLiteralSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool+stringLiteralSingleQuote x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+ Model.projectionFieldName = (Model.Name "singleQuote")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.StringLiteral+stringLiteralStringLiteral :: Typed.TypedName Syntax.StringLiteral+stringLiteralStringLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.StringLiteral")++-- | DSL accessor for the value field of hydra.typescript.syntax.StringLiteral+stringLiteralValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String+stringLiteralValue x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the singleQuote field of hydra.typescript.syntax.StringLiteral+stringLiteralWithSingleQuote :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.StringLiteral+stringLiteralWithSingleQuote original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "singleQuote"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.StringLiteral+stringLiteralWithValue :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.StringLiteral+stringLiteralWithValue original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "singleQuote"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.StringLiteral"),+ Model.projectionFieldName = (Model.Name "singleQuote")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.SwitchCase+switchCase :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase+switchCase test consequent =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm test)},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Typed.unTypedTerm consequent)}]}))++-- | DSL accessor for the consequent field of hydra.typescript.syntax.SwitchCase+switchCaseConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement]+switchCaseConsequent x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.SwitchCase+switchCaseSwitchCase :: Typed.TypedName Syntax.SwitchCase+switchCaseSwitchCase = Typed.TypedName (Model.Name "hydra.typescript.syntax.SwitchCase")++-- | DSL accessor for the test field of hydra.typescript.syntax.SwitchCase+switchCaseTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression)+switchCaseTest x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the consequent field of hydra.typescript.syntax.SwitchCase+switchCaseWithConsequent :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm [Syntax.Statement] -> Typed.TypedTerm Syntax.SwitchCase+switchCaseWithConsequent original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.SwitchCase+switchCaseWithTest :: Typed.TypedTerm Syntax.SwitchCase -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.SwitchCase+switchCaseWithTest original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "consequent"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchCase"),+ Model.projectionFieldName = (Model.Name "consequent")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.SwitchStatement+switchStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement+switchStatement discriminant cases =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "discriminant"),+ Model.fieldTerm = (Typed.unTypedTerm discriminant)},+ Model.Field {+ Model.fieldName = (Model.Name "cases"),+ Model.fieldTerm = (Typed.unTypedTerm cases)}]}))++-- | DSL accessor for the cases field of hydra.typescript.syntax.SwitchStatement+switchStatementCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase]+switchStatementCases x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+ Model.projectionFieldName = (Model.Name "cases")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the discriminant field of hydra.typescript.syntax.SwitchStatement+switchStatementDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression+switchStatementDiscriminant x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+ Model.projectionFieldName = (Model.Name "discriminant")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.SwitchStatement+switchStatementSwitchStatement :: Typed.TypedName Syntax.SwitchStatement+switchStatementSwitchStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.SwitchStatement")++-- | DSL updater for the cases field of hydra.typescript.syntax.SwitchStatement+switchStatementWithCases :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm [Syntax.SwitchCase] -> Typed.TypedTerm Syntax.SwitchStatement+switchStatementWithCases original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "discriminant"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+ Model.projectionFieldName = (Model.Name "discriminant")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "cases"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the discriminant field of hydra.typescript.syntax.SwitchStatement+switchStatementWithDiscriminant :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchStatement+switchStatementWithDiscriminant original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "discriminant"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "cases"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.SwitchStatement"),+ Model.projectionFieldName = (Model.Name "cases")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TemplateElement+templateElement :: Typed.TypedTerm String -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement+templateElement value tail =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm value)},+ Model.Field {+ Model.fieldName = (Model.Name "tail"),+ Model.fieldTerm = (Typed.unTypedTerm tail)}]}))++-- | DSL accessor for the tail field of hydra.typescript.syntax.TemplateElement+templateElementTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool+templateElementTail x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+ Model.projectionFieldName = (Model.Name "tail")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TemplateElement+templateElementTemplateElement :: Typed.TypedName Syntax.TemplateElement+templateElementTemplateElement = Typed.TypedName (Model.Name "hydra.typescript.syntax.TemplateElement")++-- | DSL accessor for the value field of hydra.typescript.syntax.TemplateElement+templateElementValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String+templateElementValue x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the tail field of hydra.typescript.syntax.TemplateElement+templateElementWithTail :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.TemplateElement+templateElementWithTail original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+ Model.projectionFieldName = (Model.Name "value")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "tail"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.typescript.syntax.TemplateElement+templateElementWithValue :: Typed.TypedTerm Syntax.TemplateElement -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.TemplateElement+templateElementWithValue original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "value"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "tail"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateElement"),+ Model.projectionFieldName = (Model.Name "tail")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TemplateLiteral+templateLiteral :: Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral+templateLiteral quasis expressions =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "quasis"),+ Model.fieldTerm = (Typed.unTypedTerm quasis)},+ Model.Field {+ Model.fieldName = (Model.Name "expressions"),+ Model.fieldTerm = (Typed.unTypedTerm expressions)}]}))++-- | DSL accessor for the expressions field of hydra.typescript.syntax.TemplateLiteral+templateLiteralExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression]+templateLiteralExpressions x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+ Model.projectionFieldName = (Model.Name "expressions")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the quasis field of hydra.typescript.syntax.TemplateLiteral+templateLiteralQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement]+templateLiteralQuasis x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+ Model.projectionFieldName = (Model.Name "quasis")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TemplateLiteral+templateLiteralTemplateLiteral :: Typed.TypedName Syntax.TemplateLiteral+templateLiteralTemplateLiteral = Typed.TypedName (Model.Name "hydra.typescript.syntax.TemplateLiteral")++-- | DSL updater for the expressions field of hydra.typescript.syntax.TemplateLiteral+templateLiteralWithExpressions :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.TemplateLiteral+templateLiteralWithExpressions original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "quasis"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+ Model.projectionFieldName = (Model.Name "quasis")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "expressions"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the quasis field of hydra.typescript.syntax.TemplateLiteral+templateLiteralWithQuasis :: Typed.TypedTerm Syntax.TemplateLiteral -> Typed.TypedTerm [Syntax.TemplateElement] -> Typed.TypedTerm Syntax.TemplateLiteral+templateLiteralWithQuasis original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "quasis"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "expressions"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TemplateLiteral"),+ Model.projectionFieldName = (Model.Name "expressions")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.ThrowStatement wrapper+throwStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ThrowStatement+throwStatement x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.ThrowStatement"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.ThrowStatement+throwStatementThrowStatement :: Typed.TypedName Syntax.ThrowStatement+throwStatementThrowStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.ThrowStatement")++-- | DSL constructor for hydra.typescript.syntax.TryStatement+tryStatement :: Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement+tryStatement block handler finalizer =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "block"),+ Model.fieldTerm = (Typed.unTypedTerm block)},+ Model.Field {+ Model.fieldName = (Model.Name "handler"),+ Model.fieldTerm = (Typed.unTypedTerm handler)},+ Model.Field {+ Model.fieldName = (Model.Name "finalizer"),+ Model.fieldTerm = (Typed.unTypedTerm finalizer)}]}))++-- | DSL accessor for the block field of hydra.typescript.syntax.TryStatement+tryStatementBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement+tryStatementBlock x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "block")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the finalizer field of hydra.typescript.syntax.TryStatement+tryStatementFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement)+tryStatementFinalizer x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "finalizer")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the handler field of hydra.typescript.syntax.TryStatement+tryStatementHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause)+tryStatementHandler x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "handler")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TryStatement+tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement+tryStatementTryStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.TryStatement")++-- | DSL updater for the block field of hydra.typescript.syntax.TryStatement+tryStatementWithBlock :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.BlockStatement -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithBlock original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "block"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "handler"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "handler")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "finalizer"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "finalizer")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the finalizer field of hydra.typescript.syntax.TryStatement+tryStatementWithFinalizer :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.BlockStatement) -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithFinalizer original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "block"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "block")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "handler"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "handler")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "finalizer"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the handler field of hydra.typescript.syntax.TryStatement+tryStatementWithHandler :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm (Maybe Syntax.CatchClause) -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithHandler original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "block"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "block")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "handler"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "finalizer"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TryStatement"),+ Model.projectionFieldName = (Model.Name "finalizer")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclaration :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclaration name typeParameters type_ =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm name)},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Typed.unTypedTerm typeParameters)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the name field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier+typeAliasDeclarationName x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression+typeAliasDeclarationType x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationTypeAliasDeclaration :: Typed.TypedName Syntax.TypeAliasDeclaration+typeAliasDeclarationTypeAliasDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration")++-- | DSL accessor for the typeParameters field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]+typeAliasDeclarationTypeParameters x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the name field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationWithName :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclarationWithName original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationWithType :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclarationWithType original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "typeParameters")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeParameters field of hydra.typescript.syntax.TypeAliasDeclaration+typeAliasDeclarationWithTypeParameters :: Typed.TypedTerm Syntax.TypeAliasDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.TypeAliasDeclaration+typeAliasDeclarationWithTypeParameters original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "typeParameters"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.typescript.syntax.TypeAnnotation wrapper+typeAnnotation :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeAnnotation+typeAnnotation x =+ Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+ Model.wrappedTermTypeName = (Model.Name "hydra.typescript.syntax.TypeAnnotation"),+ Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypeAnnotation+typeAnnotationTypeAnnotation :: Typed.TypedName Syntax.TypeAnnotation+typeAnnotationTypeAnnotation = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeAnnotation")++-- | DSL injection for the any variant of hydra.typescript.syntax.TypeExpression+typeExpressionAny :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionAny =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "any"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the array variant of hydra.typescript.syntax.TypeExpression+typeExpressionArray :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionArray x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "array"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the function variant of hydra.typescript.syntax.TypeExpression+typeExpressionFunction :: Typed.TypedTerm Syntax.FunctionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionFunction x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "function"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the identifier variant of hydra.typescript.syntax.TypeExpression+typeExpressionIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionIdentifier x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "identifier"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the intersection variant of hydra.typescript.syntax.TypeExpression+typeExpressionIntersection :: Typed.TypedTerm Syntax.IntersectionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionIntersection x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "intersection"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.typescript.syntax.TypeExpression+typeExpressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionLiteral x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "literal"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the never variant of hydra.typescript.syntax.TypeExpression+typeExpressionNever :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionNever =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "never"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the object variant of hydra.typescript.syntax.TypeExpression+typeExpressionObject :: Typed.TypedTerm Syntax.ObjectTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionObject x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "object"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the optional variant of hydra.typescript.syntax.TypeExpression+typeExpressionOptional :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionOptional x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "optional"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the parameterized variant of hydra.typescript.syntax.TypeExpression+typeExpressionParameterized :: Typed.TypedTerm Syntax.ParameterizedTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionParameterized x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "parameterized"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the readonly variant of hydra.typescript.syntax.TypeExpression+typeExpressionReadonly :: Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionReadonly x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "readonly"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the tuple variant of hydra.typescript.syntax.TypeExpression+typeExpressionTuple :: Typed.TypedTerm Syntax.TupleTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionTuple x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "tuple"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.typescript.syntax.TypeExpression+typeExpressionTypeExpression :: Typed.TypedName Syntax.TypeExpression+typeExpressionTypeExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeExpression")++-- | DSL injection for the union variant of hydra.typescript.syntax.TypeExpression+typeExpressionUnion :: Typed.TypedTerm Syntax.UnionTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+typeExpressionUnion x =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "union"),+ Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the unknown variant of hydra.typescript.syntax.TypeExpression+typeExpressionUnknown :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionUnknown =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "unknown"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the void variant of hydra.typescript.syntax.TypeExpression+typeExpressionVoid :: Typed.TypedTerm Syntax.TypeExpression+typeExpressionVoid =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.TypeExpression"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "void"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.TypeParameter+typeParameter :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter+typeParameter name constraint default_ =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm name)},+ Model.Field {+ Model.fieldName = (Model.Name "constraint"),+ Model.fieldTerm = (Typed.unTypedTerm constraint)},+ Model.Field {+ Model.fieldName = (Model.Name "default"),+ Model.fieldTerm = (Typed.unTypedTerm default_)}]}))++-- | DSL accessor for the constraint field of hydra.typescript.syntax.TypeParameter+typeParameterConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)+typeParameterConstraint x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "constraint")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the default field of hydra.typescript.syntax.TypeParameter+typeParameterDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression)+typeParameterDefault x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "default")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.typescript.syntax.TypeParameter+typeParameterName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier+typeParameterName x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypeParameter+typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter+typeParameterTypeParameter = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypeParameter")++-- | DSL updater for the constraint field of hydra.typescript.syntax.TypeParameter+typeParameterWithConstraint :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithConstraint original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "constraint"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "default"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "default")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the default field of hydra.typescript.syntax.TypeParameter+typeParameterWithDefault :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeExpression) -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithDefault original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "name")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "constraint"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "constraint")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "default"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.typescript.syntax.TypeParameter+typeParameterWithName :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithName original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "name"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "constraint"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "constraint")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "default"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypeParameter"),+ Model.projectionFieldName = (Model.Name "default")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.TypedPattern+typedPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern+typedPattern pattern type_ =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "pattern"),+ Model.fieldTerm = (Typed.unTypedTerm pattern)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm type_)}]}))++-- | DSL accessor for the pattern field of hydra.typescript.syntax.TypedPattern+typedPatternPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern+typedPatternPattern x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+ Model.projectionFieldName = (Model.Name "pattern")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.typescript.syntax.TypedPattern+typedPatternType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression+typedPatternType x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.TypedPattern+typedPatternTypedPattern :: Typed.TypedName Syntax.TypedPattern+typedPatternTypedPattern = Typed.TypedName (Model.Name "hydra.typescript.syntax.TypedPattern")++-- | DSL updater for the pattern field of hydra.typescript.syntax.TypedPattern+typedPatternWithPattern :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.TypedPattern+typedPatternWithPattern original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "pattern"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+ Model.projectionFieldName = (Model.Name "type")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.typescript.syntax.TypedPattern+typedPatternWithType :: Typed.TypedTerm Syntax.TypedPattern -> Typed.TypedTerm Syntax.TypeExpression -> Typed.TypedTerm Syntax.TypedPattern+typedPatternWithType original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "pattern"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.TypedPattern"),+ Model.projectionFieldName = (Model.Name "pattern")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "type"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL accessor for the body of hydra.typescript.syntax.ArrayTypeExpression+unArrayTypeExpression :: Typed.TypedTerm Syntax.ArrayTypeExpression -> Typed.TypedTerm Syntax.TypeExpression+unArrayTypeExpression x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ArrayTypeExpression")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.Identifier+unIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm String+unIdentifier x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.Identifier")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.ImportDefaultSpecifier+unImportDefaultSpecifier :: Typed.TypedTerm Syntax.ImportDefaultSpecifier -> Typed.TypedTerm Syntax.Identifier+unImportDefaultSpecifier x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.ImportNamespaceSpecifier+unImportNamespaceSpecifier :: Typed.TypedTerm Syntax.ImportNamespaceSpecifier -> Typed.TypedTerm Syntax.Identifier+unImportNamespaceSpecifier x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.RestElement+unRestElement :: Typed.TypedTerm Syntax.RestElement -> Typed.TypedTerm Syntax.Pattern+unRestElement x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.RestElement")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.SpreadElement+unSpreadElement :: Typed.TypedTerm Syntax.SpreadElement -> Typed.TypedTerm Syntax.Expression+unSpreadElement x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.SpreadElement")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.ThrowStatement+unThrowStatement :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.Expression+unThrowStatement x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.ThrowStatement")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.typescript.syntax.TypeAnnotation+unTypeAnnotation :: Typed.TypedTerm Syntax.TypeAnnotation -> Typed.TypedTerm Syntax.TypeExpression+unTypeAnnotation x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.typescript.syntax.TypeAnnotation")),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.typescript.syntax.UnaryExpression+unaryExpression :: Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpression operator argument prefix =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Typed.unTypedTerm operator)},+ Model.Field {+ Model.fieldName = (Model.Name "argument"),+ Model.fieldTerm = (Typed.unTypedTerm argument)},+ Model.Field {+ Model.fieldName = (Model.Name "prefix"),+ Model.fieldTerm = (Typed.unTypedTerm prefix)}]}))++-- | DSL accessor for the argument field of hydra.typescript.syntax.UnaryExpression+unaryExpressionArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression+unaryExpressionArgument x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "argument")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the operator field of hydra.typescript.syntax.UnaryExpression+unaryExpressionOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator+unaryExpressionOperator x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the prefix field of hydra.typescript.syntax.UnaryExpression+unaryExpressionPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool+unaryExpressionPrefix x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "prefix")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.UnaryExpression+unaryExpressionUnaryExpression :: Typed.TypedName Syntax.UnaryExpression+unaryExpressionUnaryExpression = Typed.TypedName (Model.Name "hydra.typescript.syntax.UnaryExpression")++-- | DSL updater for the argument field of hydra.typescript.syntax.UnaryExpression+unaryExpressionWithArgument :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionWithArgument original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "argument"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "prefix"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "prefix")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the operator field of hydra.typescript.syntax.UnaryExpression+unaryExpressionWithOperator :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryOperator -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionWithOperator original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "argument"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "argument")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "prefix"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "prefix")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the prefix field of hydra.typescript.syntax.UnaryExpression+unaryExpressionWithPrefix :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionWithPrefix original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "operator"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "operator")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "argument"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryExpression"),+ Model.projectionFieldName = (Model.Name "argument")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "prefix"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the bitwiseNot variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorBitwiseNot :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorBitwiseNot =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "bitwiseNot"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the decrement variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorDecrement :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorDecrement =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "decrement"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the delete variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorDelete :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorDelete =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "delete"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the increment variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorIncrement :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorIncrement =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "increment"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the negate variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorNegate :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorNegate =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "negate"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the not variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorNot :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorNot =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "not"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the plus variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorPlus :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorPlus =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "plus"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the typeof variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorTypeof :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorTypeof =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "typeof"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.UnaryOperator+unaryOperatorUnaryOperator :: Typed.TypedName Syntax.UnaryOperator+unaryOperatorUnaryOperator = Typed.TypedName (Model.Name "hydra.typescript.syntax.UnaryOperator")++-- | DSL injection for the void variant of hydra.typescript.syntax.UnaryOperator+unaryOperatorVoid :: Typed.TypedTerm Syntax.UnaryOperator+unaryOperatorVoid =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.UnaryOperator"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "void"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.typescript.syntax.VariableDeclaration+variableDeclaration :: Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration+variableDeclaration kind declarations =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Typed.unTypedTerm kind)},+ Model.Field {+ Model.fieldName = (Model.Name "declarations"),+ Model.fieldTerm = (Typed.unTypedTerm declarations)}]}))++-- | DSL accessor for the declarations field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]+variableDeclarationDeclarations x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+ Model.projectionFieldName = (Model.Name "declarations")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the kind field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind+variableDeclarationKind x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.VariableDeclaration+variableDeclarationVariableDeclaration :: Typed.TypedName Syntax.VariableDeclaration+variableDeclarationVariableDeclaration = Typed.TypedName (Model.Name "hydra.typescript.syntax.VariableDeclaration")++-- | DSL updater for the declarations field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationWithDeclarations :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.VariableDeclaration+variableDeclarationWithDeclarations original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+ Model.projectionFieldName = (Model.Name "kind")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "declarations"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the kind field of hydra.typescript.syntax.VariableDeclaration+variableDeclarationWithKind :: Typed.TypedTerm Syntax.VariableDeclaration -> Typed.TypedTerm Syntax.VariableKind -> Typed.TypedTerm Syntax.VariableDeclaration+variableDeclarationWithKind original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "kind"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "declarations"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclaration"),+ Model.projectionFieldName = (Model.Name "declarations")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.typescript.syntax.VariableDeclarator+variableDeclarator :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclarator id init =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm id)},+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Typed.unTypedTerm init)}]}))++-- | DSL accessor for the id field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern+variableDeclaratorId x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the init field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression)+variableDeclaratorInit x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+ Model.projectionFieldName = (Model.Name "init")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.VariableDeclarator+variableDeclaratorVariableDeclarator :: Typed.TypedName Syntax.VariableDeclarator+variableDeclaratorVariableDeclarator = Typed.TypedName (Model.Name "hydra.typescript.syntax.VariableDeclarator")++-- | DSL updater for the id field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorWithId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclaratorWithId original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+ Model.projectionFieldName = (Model.Name "init")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the init field of hydra.typescript.syntax.VariableDeclarator+variableDeclaratorWithInit :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclaratorWithInit original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "id"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.VariableDeclarator"),+ Model.projectionFieldName = (Model.Name "id")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "init"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the const variant of hydra.typescript.syntax.VariableKind+variableKindConst :: Typed.TypedTerm Syntax.VariableKind+variableKindConst =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.VariableKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "const"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the let variant of hydra.typescript.syntax.VariableKind+variableKindLet :: Typed.TypedTerm Syntax.VariableKind+variableKindLet =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.VariableKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "let"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the var variant of hydra.typescript.syntax.VariableKind+variableKindVar :: Typed.TypedTerm Syntax.VariableKind+variableKindVar =+ Typed.TypedTerm (Model.TermInject (Model.Injection {+ Model.injectionTypeName = (Model.Name "hydra.typescript.syntax.VariableKind"),+ Model.injectionField = Model.Field {+ Model.fieldName = (Model.Name "var"),+ Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.typescript.syntax.VariableKind+variableKindVariableKind :: Typed.TypedName Syntax.VariableKind+variableKindVariableKind = Typed.TypedName (Model.Name "hydra.typescript.syntax.VariableKind")++-- | DSL constructor for hydra.typescript.syntax.WhileStatement+whileStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement+whileStatement test body =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm test)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.typescript.syntax.WhileStatement+whileStatementBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement+whileStatementBody x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the test field of hydra.typescript.syntax.WhileStatement+whileStatementTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression+whileStatementTest x =+ Typed.TypedTerm (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.typescript.syntax.WhileStatement+whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement+whileStatementWhileStatement = Typed.TypedName (Model.Name "hydra.typescript.syntax.WhileStatement")++-- | DSL updater for the body field of hydra.typescript.syntax.WhileStatement+whileStatementWithBody :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement+whileStatementWithBody original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+ Model.projectionFieldName = (Model.Name "test")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the test field of hydra.typescript.syntax.WhileStatement+whileStatementWithTest :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.WhileStatement+whileStatementWithTest original newVal =+ Typed.TypedTerm (Model.TermRecord (Model.Record {+ Model.recordTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+ Model.recordFields = [+ Model.Field {+ Model.fieldName = (Model.Name "test"),+ Model.fieldTerm = (Typed.unTypedTerm newVal)},+ Model.Field {+ Model.fieldName = (Model.Name "body"),+ Model.fieldTerm = (Model.TermApplication (Model.Application {+ Model.applicationFunction = (Model.TermProject (Model.Projection {+ Model.projectionTypeName = (Model.Name "hydra.typescript.syntax.WhileStatement"),+ Model.projectionFieldName = (Model.Name "body")})),+ Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+ src/main/haskell/Hydra/Typescript/Language.hs view
@@ -0,0 +1,303 @@+-- Note: this is an automatically generated file. Do not edit.++-- | Language constraints and reserved words for TypeScript 5.x (ECMAScript 2024 base)++module Hydra.Typescript.Language where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Set as S++-- | Language constraints for TypeScript 5.x+typeScriptLanguage :: Coders.Language+typeScriptLanguage =+ Coders.Language {+ Coders.languageName = (Coders.LanguageName "hydra.typeScript"),+ Coders.languageConstraints = Coders.LanguageConstraints {+ Coders.languageConstraintsLiteralVariants = literalVariants,+ Coders.languageConstraintsFloatTypes = floatTypes,+ Coders.languageConstraintsIntegerTypes = integerTypes,+ Coders.languageConstraintsTermVariants = termVariants,+ Coders.languageConstraintsTypeVariants = typeVariants,+ Coders.languageConstraintsTypes = typePredicate},+ Coders.languageSupportedFeatures = (Sets.fromList [+ Coders.LanguageFeatureNestedPolymorphicLetBindings]),+ Coders.languageCaseConventions = Coders.CaseConventions {+ Coders.caseConventionsConstant = Util.CaseConventionUpperSnake,+ Coders.caseConventionsDirectory = Util.CaseConventionLowerSnake,+ Coders.caseConventionsEnumValue = Util.CaseConventionPascal,+ Coders.caseConventionsField = Util.CaseConventionCamel,+ Coders.caseConventionsFile = Util.CaseConventionLowerSnake,+ Coders.caseConventionsModule = Util.CaseConventionLowerSnake,+ Coders.caseConventionsTerm = Util.CaseConventionCamel,+ Coders.caseConventionsTermVariable = Util.CaseConventionCamel,+ Coders.caseConventionsType = Util.CaseConventionPascal,+ Coders.caseConventionsTypeVariable = Util.CaseConventionPascal},+ Coders.languageDefaultFileExtension = (File.FileExtension "ts")}+ where+ literalVariants =+ Sets.fromList [+ Variants.LiteralVariantBinary,+ Variants.LiteralVariantBoolean,+ Variants.LiteralVariantDecimal,+ Variants.LiteralVariantFloat,+ Variants.LiteralVariantInteger,+ Variants.LiteralVariantString]+ floatTypes = Sets.fromList [+ Model.FloatTypeFloat64]+ integerTypes =+ Sets.fromList [+ Model.IntegerTypeInt32,+ Model.IntegerTypeBigint]+ termVariants =+ Sets.fromList [+ Variants.TermVariantAnnotated,+ Variants.TermVariantApplication,+ Variants.TermVariantEither,+ Variants.TermVariantCases,+ Variants.TermVariantLambda,+ Variants.TermVariantProject,+ Variants.TermVariantUnwrap,+ Variants.TermVariantLet,+ Variants.TermVariantList,+ Variants.TermVariantLiteral,+ Variants.TermVariantMap,+ Variants.TermVariantOptional,+ Variants.TermVariantPair,+ Variants.TermVariantRecord,+ Variants.TermVariantSet,+ Variants.TermVariantTypeApplication,+ Variants.TermVariantTypeLambda,+ Variants.TermVariantInject,+ Variants.TermVariantUnit,+ Variants.TermVariantVariable,+ Variants.TermVariantWrap]+ typeVariants =+ Sets.fromList [+ Variants.TypeVariantAnnotated,+ Variants.TypeVariantApplication,+ Variants.TypeVariantEither,+ Variants.TypeVariantFunction,+ Variants.TypeVariantForall,+ Variants.TypeVariantList,+ Variants.TypeVariantLiteral,+ Variants.TypeVariantMap,+ Variants.TypeVariantOptional,+ Variants.TypeVariantPair,+ Variants.TypeVariantRecord,+ Variants.TypeVariantSet,+ Variants.TypeVariantUnion,+ Variants.TypeVariantUnit,+ Variants.TypeVariantVariable,+ Variants.TypeVariantVoid,+ Variants.TypeVariantWrap]+ typePredicate = \_ -> True++-- | A set of reserved words in TypeScript+typeScriptReservedWords :: S.Set String+typeScriptReservedWords =+ Sets.fromList (Lists.concat [+ keywords,+ futureReserved,+ strictModeReserved,+ typeScriptKeywords,+ builtIns,+ hydraTypeScriptKeywords])+ where+ keywords =+ [+ "await",+ "break",+ "case",+ "catch",+ "class",+ "const",+ "continue",+ "debugger",+ "default",+ "delete",+ "do",+ "else",+ "enum",+ "export",+ "extends",+ "false",+ "finally",+ "for",+ "function",+ "if",+ "import",+ "in",+ "instanceof",+ "let",+ "new",+ "null",+ "return",+ "super",+ "switch",+ "this",+ "throw",+ "true",+ "try",+ "typeof",+ "undefined",+ "var",+ "void",+ "while",+ "with",+ "yield"]+ futureReserved =+ [+ "implements",+ "interface",+ "package",+ "private",+ "protected",+ "public"]+ strictModeReserved =+ [+ "arguments",+ "eval",+ "static",+ "yield"]+ typeScriptKeywords =+ [+ "abstract",+ "as",+ "asserts",+ "assert",+ "any",+ "boolean",+ "constructor",+ "declare",+ "from",+ "get",+ "global",+ "infer",+ "intrinsic",+ "is",+ "keyof",+ "module",+ "namespace",+ "never",+ "object",+ "of",+ "out",+ "override",+ "readonly",+ "require",+ "satisfies",+ "set",+ "string",+ "symbol",+ "type",+ "unique",+ "unknown",+ "using"]+ builtIns =+ [+ "Array",+ "ArrayBuffer",+ "BigInt",+ "Boolean",+ "DataView",+ "Date",+ "Error",+ "Float32Array",+ "Float64Array",+ "Function",+ "Int8Array",+ "Int16Array",+ "Int32Array",+ "JSON",+ "Map",+ "Math",+ "Number",+ "Object",+ "Promise",+ "Proxy",+ "Reflect",+ "RegExp",+ "Set",+ "String",+ "Symbol",+ "Uint8Array",+ "Uint8ClampedArray",+ "Uint16Array",+ "Uint32Array",+ "WeakMap",+ "WeakSet",+ "decodeURI",+ "decodeURIComponent",+ "encodeURI",+ "encodeURIComponent",+ "eval",+ "isFinite",+ "isNaN",+ "parseFloat",+ "parseInt",+ "console",+ "document",+ "global",+ "globalThis",+ "module",+ "process",+ "require",+ "window"]+ hydraTypeScriptKeywords =+ [+ "Name",+ "FrozenMap",+ "TERM_ANNOTATED",+ "TERM_APPLICATION",+ "TERM_EITHER",+ "TERM_FUNCTION",+ "TERM_LET",+ "TERM_LIST",+ "TERM_LITERAL",+ "TERM_MAP",+ "TERM_MAYBE",+ "TERM_PAIR",+ "TERM_RECORD",+ "TERM_SET",+ "TERM_TYPE_APPLICATION",+ "TERM_TYPE_LAMBDA",+ "TERM_UNION",+ "TERM_UNIT",+ "TERM_VARIABLE",+ "TERM_WRAP"]
+ src/main/haskell/Hydra/Typescript/Operators.hs view
@@ -0,0 +1,198 @@+-- Note: this is an automatically generated file. Do not edit.++-- | AST operators for TypeScript with precedence and associativity++module Hydra.Typescript.Operators where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | Addition operator (+)+addOp :: Ast.Op+addOp = Serialization.op "+" 14 Ast.AssociativityLeft++-- | Function application (whitespace)+appOp :: Ast.Op+appOp =+ Ast.Op {+ Ast.opSymbol = (Ast.Symbol ""),+ Ast.opPadding = Ast.Padding {+ Ast.paddingLeft = Ast.WsNone,+ Ast.paddingRight = Ast.WsNone},+ Ast.opPrecedence = (Ast.Precedence 20),+ Ast.opAssociativity = Ast.AssociativityLeft}++-- | Arrow function operator (=>)+arrowOp :: Ast.Op+arrowOp = Serialization.op "=>" 2 Ast.AssociativityRight++-- | Assignment operator (=)+assignOp :: Ast.Op+assignOp = Serialization.op "=" 2 Ast.AssociativityRight++-- | Bitwise AND operator (&)+bitwiseAndOp :: Ast.Op+bitwiseAndOp = Serialization.op "&" 10 Ast.AssociativityLeft++-- | Bitwise OR operator (|)+bitwiseOrOp :: Ast.Op+bitwiseOrOp = Serialization.op "|" 8 Ast.AssociativityLeft++-- | Bitwise XOR operator (^)+bitwiseXorOp :: Ast.Op+bitwiseXorOp = Serialization.op "^" 9 Ast.AssociativityLeft++-- | Type annotation colon (:)+colonOp :: Ast.Op+colonOp = Serialization.op ":" 0 Ast.AssociativityNone++-- | Comma operator (,)+commaOp :: Ast.Op+commaOp = Serialization.op "," 1 Ast.AssociativityLeft++-- | Definition operator (= in const x = ...)+defineOp :: Ast.Op+defineOp = Serialization.op "=" 0 Ast.AssociativityNone++-- | Division operator (/)+divideOp :: Ast.Op+divideOp = Serialization.op "/" 15 Ast.AssociativityLeft++-- | Equality operator (==)+equalOp :: Ast.Op+equalOp = Serialization.op "==" 11 Ast.AssociativityLeft++-- | Exponentiation operator (**)+exponentiateOp :: Ast.Op+exponentiateOp = Serialization.op "**" 16 Ast.AssociativityRight++-- | Greater than operator (>)+greaterThanOp :: Ast.Op+greaterThanOp = Serialization.op ">" 12 Ast.AssociativityLeft++-- | Greater than or equal operator (>=)+greaterThanOrEqualOp :: Ast.Op+greaterThanOrEqualOp = Serialization.op ">=" 12 Ast.AssociativityLeft++-- | In operator (in)+inOp :: Ast.Op+inOp = Serialization.op "in" 12 Ast.AssociativityLeft++-- | Instance of operator (instanceof)+instanceOfOp :: Ast.Op+instanceOfOp = Serialization.op "instanceof" 12 Ast.AssociativityLeft++-- | Left shift operator (<<)+leftShiftOp :: Ast.Op+leftShiftOp = Serialization.op "<<" 13 Ast.AssociativityLeft++-- | Less than operator (<)+lessThanOp :: Ast.Op+lessThanOp = Serialization.op "<" 12 Ast.AssociativityLeft++-- | Less than or equal operator (<=)+lessThanOrEqualOp :: Ast.Op+lessThanOrEqualOp = Serialization.op "<=" 12 Ast.AssociativityLeft++-- | Logical AND operator (&&)+logicalAndOp :: Ast.Op+logicalAndOp = Serialization.op "&&" 6 Ast.AssociativityLeft++-- | Logical OR operator (||)+logicalOrOp :: Ast.Op+logicalOrOp = Serialization.op "||" 5 Ast.AssociativityLeft++-- | Member access operator (.)+memberOp :: Ast.Op+memberOp =+ Ast.Op {+ Ast.opSymbol = (Ast.Symbol "."),+ Ast.opPadding = Ast.Padding {+ Ast.paddingLeft = Ast.WsNone,+ Ast.paddingRight = Ast.WsNone},+ Ast.opPrecedence = (Ast.Precedence 20),+ Ast.opAssociativity = Ast.AssociativityLeft}++-- | Modulo operator (%)+moduloOp :: Ast.Op+moduloOp = Serialization.op "%" 15 Ast.AssociativityLeft++-- | Multiplication operator (*)+multiplyOp :: Ast.Op+multiplyOp = Serialization.op "*" 15 Ast.AssociativityLeft++-- | Inequality operator (!=)+notEqualOp :: Ast.Op+notEqualOp = Serialization.op "!=" 11 Ast.AssociativityLeft++-- | Nullish coalescing operator (??)+nullishCoalescingOp :: Ast.Op+nullishCoalescingOp = Serialization.op "??" 4 Ast.AssociativityLeft++-- | Optional chaining operator (?.)+optionalChainOp :: Ast.Op+optionalChainOp =+ Ast.Op {+ Ast.opSymbol = (Ast.Symbol "?."),+ Ast.opPadding = Ast.Padding {+ Ast.paddingLeft = Ast.WsNone,+ Ast.paddingRight = Ast.WsNone},+ Ast.opPrecedence = (Ast.Precedence 20),+ Ast.opAssociativity = Ast.AssociativityLeft}++-- | Right shift operator (>>)+rightShiftOp :: Ast.Op+rightShiftOp = Serialization.op ">>" 13 Ast.AssociativityLeft++-- | Strict equality operator (===)+strictEqualOp :: Ast.Op+strictEqualOp = Serialization.op "===" 11 Ast.AssociativityLeft++-- | Strict inequality operator (!==)+strictNotEqualOp :: Ast.Op+strictNotEqualOp = Serialization.op "!==" 11 Ast.AssociativityLeft++-- | Subtraction operator (-)+subtractOp :: Ast.Op+subtractOp = Serialization.op "-" 14 Ast.AssociativityLeft++-- | Ternary operator (?:) - represents the ? part+ternaryOp :: Ast.Op+ternaryOp = Serialization.op "?" 3 Ast.AssociativityRight++-- | Unsigned right shift operator (>>>)+unsignedRightShiftOp :: Ast.Op+unsignedRightShiftOp = Serialization.op ">>>" 13 Ast.AssociativityLeft
+ src/main/haskell/Hydra/Typescript/Overlay/Haskell/Dsl/TypeScript/Helpers.hs view
@@ -0,0 +1,623 @@+-- | A DSL for constructing TypeScript syntax trees in Haskell.+module Hydra.Typescript.Overlay.Haskell.Dsl.TypeScript.Helpers where++import Hydra.Typescript.Syntax+import qualified Data.Int as I+++-- * Identifiers++-- | Create an identifier+-- Example: ident "foo"+ident :: String -> Identifier+ident = Identifier++-- | Create a qualified name from a list of strings+-- Example: qualifiedName ["module", "submodule", "name"]+qualifiedName :: [String] -> QualifiedName+qualifiedName = fmap Identifier+++-- * Literals++-- | Create a string literal with double quotes+-- Example: stringLit "hello"+stringLit :: String -> Literal+stringLit s = LiteralString $ StringLiteral s False++-- | Create a string literal with single quotes+-- Example: stringLitSingle "hello"+stringLitSingle :: String -> Literal+stringLitSingle s = LiteralString $ StringLiteral s True++-- | Create an integer literal+-- Example: intLit 42+intLit :: I.Int64 -> Literal+intLit = LiteralNumber . NumericLiteralInteger++-- | Create a floating-point literal+-- Example: floatLit 3.14+floatLit :: Double -> Literal+floatLit = LiteralNumber . NumericLiteralFloat++-- | Create a boolean literal+-- Example: boolLit True+boolLit :: Bool -> Literal+boolLit = LiteralBoolean++-- | The null literal+nullLit :: Literal+nullLit = LiteralNull++-- | The undefined literal+undefinedLit :: Literal+undefinedLit = LiteralUndefined++-- | Create a BigInt literal+-- Example: bigIntLit 123+bigIntLit :: Integer -> Literal+bigIntLit = LiteralBigInt+++-- * Expressions++-- | Create an identifier expression+-- Example: identExpr "foo"+identExpr :: String -> Expression+identExpr = ExpressionIdentifier . ident++-- | Create a literal expression+-- Example: litExpr (stringLit "hello")+litExpr :: Literal -> Expression+litExpr = ExpressionLiteral++-- | Create a string expression+-- Example: stringExpr "hello"+stringExpr :: String -> Expression+stringExpr = litExpr . stringLit++-- | Create an integer expression+-- Example: intExpr 42+intExpr :: I.Int64 -> Expression+intExpr = litExpr . intLit++-- | Create a floating-point expression+-- Example: floatExpr 3.14+floatExpr :: Double -> Expression+floatExpr = litExpr . floatLit++-- | Create a boolean expression+-- Example: boolExpr True+boolExpr :: Bool -> Expression+boolExpr = litExpr . boolLit++-- | The null expression+nullExpr :: Expression+nullExpr = litExpr nullLit++-- | The undefined expression+undefinedExpr :: Expression+undefinedExpr = litExpr undefinedLit++-- | Create an array expression+-- Example: arrayExpr [intExpr 1, intExpr 2, intExpr 3]+arrayExpr :: [Expression] -> Expression+arrayExpr = ExpressionArray . fmap ArrayElementExpression++-- | Create an object expression from key-value pairs+-- Example: objectExpr [("name", stringExpr "John"), ("age", intExpr 30)]+objectExpr :: [(String, Expression)] -> Expression+objectExpr pairs = ExpressionObject $ fmap toProperty pairs+ where+ toProperty (k, v) = Property (identExpr k) v PropertyKindInit False False++-- | Create a function call expression+-- Example: callExpr (identExpr "foo") [intExpr 1, intExpr 2]+callExpr :: Expression -> [Expression] -> Expression+callExpr callee args = ExpressionCall $ CallExpression callee args False++-- | Create an optional chaining call expression+-- Example: optionalCallExpr (identExpr "foo") [intExpr 1]+optionalCallExpr :: Expression -> [Expression] -> Expression+optionalCallExpr callee args = ExpressionCall $ CallExpression callee args True++-- | Create a member access expression (obj.prop)+-- Example: memberExpr (identExpr "obj") "prop"+memberExpr :: Expression -> String -> Expression+memberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False False++-- | Create a computed member access expression (obj[expr])+-- Example: computedMemberExpr (identExpr "arr") (intExpr 0)+computedMemberExpr :: Expression -> Expression -> Expression+computedMemberExpr obj prop = ExpressionMember $ MemberExpression obj prop True False++-- | Create an optional chaining member expression (obj?.prop)+-- Example: optionalMemberExpr (identExpr "obj") "prop"+optionalMemberExpr :: Expression -> String -> Expression+optionalMemberExpr obj prop = ExpressionMember $ MemberExpression obj (identExpr prop) False True++-- | Create a conditional (ternary) expression+-- Example: condExpr (identExpr "x") (intExpr 1) (intExpr 0)+condExpr :: Expression -> Expression -> Expression -> Expression+condExpr test consequent alternate = ExpressionConditional $+ ConditionalExpression test consequent alternate++-- | Create a binary expression+-- Example: binaryExpr BinaryOperatorAdd (intExpr 1) (intExpr 2)+binaryExpr :: BinaryOperator -> Expression -> Expression -> Expression+binaryExpr op left right = ExpressionBinary $ BinaryExpression op left right++-- | Create an addition expression+-- Example: addExpr (intExpr 1) (intExpr 2)+addExpr :: Expression -> Expression -> Expression+addExpr = binaryExpr BinaryOperatorAdd++-- | Create a subtraction expression+-- Example: subExpr (intExpr 5) (intExpr 3)+subExpr :: Expression -> Expression -> Expression+subExpr = binaryExpr BinaryOperatorSubtract++-- | Create a multiplication expression+-- Example: mulExpr (intExpr 3) (intExpr 4)+mulExpr :: Expression -> Expression -> Expression+mulExpr = binaryExpr BinaryOperatorMultiply++-- | Create a division expression+-- Example: divExpr (intExpr 10) (intExpr 2)+divExpr :: Expression -> Expression -> Expression+divExpr = binaryExpr BinaryOperatorDivide++-- | Create a strict equality expression (===)+-- Example: eqExpr (identExpr "x") (intExpr 1)+eqExpr :: Expression -> Expression -> Expression+eqExpr = binaryExpr BinaryOperatorStrictEqual++-- | Create a strict inequality expression (!==)+-- Example: neqExpr (identExpr "x") (intExpr 1)+neqExpr :: Expression -> Expression -> Expression+neqExpr = binaryExpr BinaryOperatorStrictNotEqual++-- | Create a logical AND expression+-- Example: andExpr (identExpr "a") (identExpr "b")+andExpr :: Expression -> Expression -> Expression+andExpr = binaryExpr BinaryOperatorAnd++-- | Create a logical OR expression+-- Example: orExpr (identExpr "a") (identExpr "b")+orExpr :: Expression -> Expression -> Expression+orExpr = binaryExpr BinaryOperatorOr++-- | Create a unary expression+-- Example: unaryExpr UnaryOperatorNot (identExpr "x")+unaryExpr :: UnaryOperator -> Expression -> Expression+unaryExpr op arg = ExpressionUnary $ UnaryExpression op arg True++-- | Create a logical NOT expression+-- Example: notExpr (identExpr "x")+notExpr :: Expression -> Expression+notExpr = unaryExpr UnaryOperatorNot++-- | Create a negation expression+-- Example: negateExpr (identExpr "x")+negateExpr :: Expression -> Expression+negateExpr = unaryExpr UnaryOperatorNegate++-- | Create an assignment expression+-- Example: assignExpr (identPattern "x") (intExpr 42)+assignExpr :: Pattern -> Expression -> Expression+assignExpr left right = ExpressionAssignment $+ AssignmentExpression AssignmentOperatorAssign left right++-- | The 'this' expression+thisExpr :: Expression+thisExpr = ExpressionThis++-- | Create a 'new' expression+-- Example: newExpr (identExpr "Date") []+newExpr :: Expression -> [Expression] -> Expression+newExpr callee args = ExpressionNew $ CallExpression callee args False++-- | Create an await expression+-- Example: awaitExpr (callExpr (identExpr "fetch") [stringExpr "url"])+awaitExpr :: Expression -> Expression+awaitExpr = ExpressionAwait++-- | Create a yield expression+-- Example: yieldExpr (Just (intExpr 1))+yieldExpr :: Maybe Expression -> Expression+yieldExpr = ExpressionYield++-- | Create a spread expression+-- Example: spreadExpr (identExpr "arr")+spreadExpr :: Expression -> Expression+spreadExpr = ExpressionSpread . SpreadElement++-- | Create a parenthesized expression+-- Example: parenExpr (addExpr (intExpr 1) (intExpr 2))+parenExpr :: Expression -> Expression+parenExpr = ExpressionParenthesized+++-- * Arrow Functions++-- | Create an arrow function with an expression body+-- Example: arrowExpr ["x", "y"] (addExpr (identExpr "x") (identExpr "y"))+arrowExpr :: [String] -> Expression -> Expression+arrowExpr params body = ExpressionArrow $ ArrowFunctionExpression+ (fmap identPattern params)+ (ArrowFunctionBodyExpression body)+ False++-- | Create an async arrow function with an expression body+-- Example: asyncArrowExpr ["x"] (awaitExpr (callExpr (identExpr "fetch") [identExpr "x"]))+asyncArrowExpr :: [String] -> Expression -> Expression+asyncArrowExpr params body = ExpressionArrow $ ArrowFunctionExpression+ (fmap identPattern params)+ (ArrowFunctionBodyExpression body)+ True++-- | Create an arrow function with a block body+-- Example: arrowBlockExpr ["x"] [returnStmt (Just (identExpr "x"))]+arrowBlockExpr :: [String] -> [Statement] -> Expression+arrowBlockExpr params body = ExpressionArrow $ ArrowFunctionExpression+ (fmap identPattern params)+ (ArrowFunctionBodyBlock body)+ False+++-- * Patterns++-- | Create an identifier pattern+-- Example: identPattern "x"+identPattern :: String -> Pattern+identPattern = PatternIdentifier . ident++-- | Create an object destructuring pattern+-- Example: objectPattern [identPattern "a", identPattern "b"]+objectPattern :: [Pattern] -> Pattern+objectPattern ps = PatternObject $ ObjectPattern $ fmap toProperty ps+ where+ toProperty p = case p of+ PatternIdentifier i -> ObjectPatternPropertyProperty $+ Property (ExpressionIdentifier i) (ExpressionIdentifier i) PropertyKindInit False True+ _ -> ObjectPatternPropertyProperty $+ Property nullExpr (patternToExpr p) PropertyKindInit False False+ patternToExpr (PatternIdentifier i) = ExpressionIdentifier i+ patternToExpr _ = nullExpr++-- | Create an array destructuring pattern+-- Example: arrayPattern [Just (identPattern "a"), Nothing, Just (identPattern "b")]+arrayPattern :: [Maybe Pattern] -> Pattern+arrayPattern = PatternArray++-- | Create a rest pattern+-- Example: restPattern "args"+restPattern :: String -> Pattern+restPattern = PatternRest . RestElement . identPattern++-- | Create a pattern with a default value+-- Example: defaultPattern "x" (intExpr 0)+defaultPattern :: String -> Expression -> Pattern+defaultPattern name def = PatternAssignment $+ AssignmentPattern (identPattern name) def+++-- * Statements++-- | Create an expression statement+-- Example: exprStmt (callExpr (identExpr "console.log") [stringExpr "hello"])+exprStmt :: Expression -> Statement+exprStmt = StatementExpression++-- | Create a block statement+-- Example: blockStmt [exprStmt (intExpr 1), exprStmt (intExpr 2)]+blockStmt :: [Statement] -> Statement+blockStmt = StatementBlock++-- | Create a return statement+-- Example: returnStmt (Just (intExpr 42))+returnStmt :: Maybe Expression -> Statement+returnStmt = StatementReturn++-- | Create a throw statement+-- Example: throwStmt (newExpr (identExpr "Error") [stringExpr "oops"])+throwStmt :: Expression -> Statement+throwStmt = StatementThrow . ThrowStatement++-- | Create a break statement+-- Example: breakStmt Nothing+breakStmt :: Maybe String -> Statement+breakStmt = StatementBreak . fmap ident++-- | Create a continue statement+-- Example: continueStmt Nothing+continueStmt :: Maybe String -> Statement+continueStmt = StatementContinue . fmap ident++-- | Create an if statement+-- Example: ifStmt (identExpr "x") (returnStmt (Just (intExpr 1))) Nothing+ifStmt :: Expression -> Statement -> Maybe Statement -> Statement+ifStmt test consequent alternate = StatementIf $ IfStatement test consequent alternate++-- | Create a while statement+-- Example: whileStmt (boolExpr True) (blockStmt [breakStmt Nothing])+whileStmt :: Expression -> Statement -> Statement+whileStmt test body = StatementWhile $ WhileStatement test body++-- | Create a for statement+-- Example: forStmt (Just (ForInitVariable (constDecl "i" (intExpr 0)))) (Just (binaryExpr BinaryOperatorLessThan (identExpr "i") (intExpr 10))) (Just (unaryExpr UnaryOperatorIncrement (identExpr "i"))) (blockStmt [])+forStmt :: Maybe ForInit -> Maybe Expression -> Maybe Expression -> Statement -> Statement+forStmt init test update body = StatementFor $ ForStatement init test update body++-- | Create a for-of statement+-- Example: forOfStmt False (ForInLeftVariable (constDecl "item" Nothing)) (identExpr "items") (blockStmt [])+forOfStmt :: Bool -> ForInLeft -> Expression -> Statement -> Statement+forOfStmt await left right body = StatementForOf $ ForOfStatement await left right body++-- | Create a try statement+-- Example: tryStmt [exprStmt (callExpr (identExpr "riskyOp") [])] (Just (catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")])) Nothing+tryStmt :: [Statement] -> Maybe CatchClause -> Maybe [Statement] -> Statement+tryStmt block handler finalizer = StatementTry $ TryStatement block handler finalizer++-- | Create a catch clause+-- Example: catchClause (Just (identPattern "e")) [throwStmt (identExpr "e")]+catchClause :: Maybe Pattern -> [Statement] -> CatchClause+catchClause = CatchClause++-- | Create a switch statement+-- Example: switchStmt (identExpr "x") [switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))], switchCase Nothing [returnStmt (Just (stringExpr "default"))]]+switchStmt :: Expression -> [SwitchCase] -> Statement+switchStmt discriminant cases = StatementSwitch $ SwitchStatement discriminant cases++-- | Create a switch case+-- Example: switchCase (Just (intExpr 1)) [returnStmt (Just (stringExpr "one"))]+switchCase :: Maybe Expression -> [Statement] -> SwitchCase+switchCase = SwitchCase++-- | An empty statement+emptyStmt :: Statement+emptyStmt = StatementEmpty++-- | A debugger statement+debuggerStmt :: Statement+debuggerStmt = StatementDebugger+++-- * Variable Declarations++-- | Create a const declaration+-- Example: constDecl "x" (Just (intExpr 42))+constDecl :: String -> Maybe Expression -> VariableDeclaration+constDecl name init = VariableDeclaration VariableKindConst+ [VariableDeclarator (identPattern name) init]++-- | Create a let declaration+-- Example: letDecl "x" (Just (intExpr 42))+letDecl :: String -> Maybe Expression -> VariableDeclaration+letDecl name init = VariableDeclaration VariableKindLet+ [VariableDeclarator (identPattern name) init]++-- | Create a var declaration+-- Example: varDecl "x" (Just (intExpr 42))+varDecl :: String -> Maybe Expression -> VariableDeclaration+varDecl name init = VariableDeclaration VariableKindVar+ [VariableDeclarator (identPattern name) init]++-- | Create a variable declaration statement+-- Example: varDeclStmt (constDecl "x" (Just (intExpr 42)))+varDeclStmt :: VariableDeclaration -> Statement+varDeclStmt = StatementVariableDeclaration+++-- * Function Declarations++-- | Create a function declaration+-- Example: funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))]+funcDecl :: String -> [String] -> [Statement] -> FunctionDeclaration+funcDecl name params body = FunctionDeclaration+ (ident name)+ (fmap identPattern params)+ body+ False+ False++-- | Create an async function declaration+-- Example: asyncFuncDecl "fetchData" ["url"] [returnStmt (Just (awaitExpr (callExpr (identExpr "fetch") [identExpr "url"])))]+asyncFuncDecl :: String -> [String] -> [Statement] -> FunctionDeclaration+asyncFuncDecl name params body = FunctionDeclaration+ (ident name)+ (fmap identPattern params)+ body+ True+ False++-- | Create a function declaration statement+-- Example: funcDeclStmt (funcDecl "add" ["x", "y"] [returnStmt (Just (addExpr (identExpr "x") (identExpr "y")))])+funcDeclStmt :: FunctionDeclaration -> Statement+funcDeclStmt = StatementFunctionDeclaration+++-- * Class Declarations++-- | Create a class declaration+-- Example: classDecl "Person" Nothing [methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]]+classDecl :: String -> Maybe Expression -> [MethodDefinition] -> ClassDeclaration+classDecl name superClass body = ClassDeclaration (ident name) superClass body++-- | Create a method definition+-- Example: methodDef "greet" [] [returnStmt (Just (stringExpr "hello"))]+methodDef :: String -> [String] -> [Statement] -> MethodDefinition+methodDef name params body = MethodDefinition+ (identExpr name)+ (FunctionExpression Nothing (fmap identPattern params) body False False)+ MethodKindMethod+ False+ False++-- | Create a constructor definition+-- Example: constructorDef ["name"] [exprStmt (assignExpr (PatternIdentifier (ident "this.name")) (identExpr "name"))]+constructorDef :: [String] -> [Statement] -> MethodDefinition+constructorDef params body = MethodDefinition+ (identExpr "constructor")+ (FunctionExpression Nothing (fmap identPattern params) body False False)+ MethodKindConstructor+ False+ False++-- | Create a static method definition+-- Example: staticMethodDef "create" [] [returnStmt (Just (newExpr (identExpr "Person") []))]+staticMethodDef :: String -> [String] -> [Statement] -> MethodDefinition+staticMethodDef name params body = MethodDefinition+ (identExpr name)+ (FunctionExpression Nothing (fmap identPattern params) body False False)+ MethodKindMethod+ False+ True++-- | Create a class declaration statement+-- Example: classDeclStmt (classDecl "Person" Nothing [])+classDeclStmt :: ClassDeclaration -> Statement+classDeclStmt = StatementClassDeclaration+++-- * Module Items++-- | Create a statement module item+-- Example: stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))+stmtItem :: Statement -> ModuleItem+stmtItem = ModuleItemStatement++-- | Create an import declaration+-- Example: importDecl [importNamed "foo" "foo"] "./module.js"+importDecl :: [ImportClause] -> String -> ImportDeclaration+importDecl specifiers source = ImportDeclaration specifiers (StringLiteral source False)++-- | Create a named import+-- Example: importNamed "foo" "bar" -- import { foo as bar }+importNamed :: String -> String -> ImportClause+importNamed imported local = ImportClauseNamed $+ ImportSpecifier (ident imported) (ident local)++-- | Create a default import+-- Example: importDefault "foo" -- import foo from ...+importDefault :: String -> ImportClause+importDefault = ImportClauseDefault . ImportDefaultSpecifier . ident++-- | Create a namespace import+-- Example: importNamespace "foo" -- import * as foo from ...+importNamespace :: String -> ImportClause+importNamespace = ImportClauseNamespace . ImportNamespaceSpecifier . ident++-- | Create an import module item+-- Example: importItem (importDecl [importDefault "React"] "react")+importItem :: ImportDeclaration -> ModuleItem+importItem = ModuleItemImport++-- | Create a named export declaration+-- Example: namedExportDecl [("foo", "foo")] Nothing+namedExportDecl :: [(String, String)] -> Maybe String -> ExportDeclaration+namedExportDecl specifiers source = ExportDeclarationNamed $ NamedExport+ (fmap (\(local, exported) -> ExportSpecifier (ident local) (ident exported)) specifiers)+ (fmap (\s -> StringLiteral s False) source)++-- | Create a default export declaration+-- Example: defaultExportDecl (identExpr "foo")+defaultExportDecl :: Expression -> ExportDeclaration+defaultExportDecl = ExportDeclarationDefault++-- | Create an export declaration for a statement+-- Example: exportDeclStmt (varDeclStmt (constDecl "x" (Just (intExpr 42))))+exportDeclStmt :: Statement -> ExportDeclaration+exportDeclStmt = ExportDeclarationDeclaration++-- | Create an export module item+-- Example: exportItem (defaultExportDecl (identExpr "foo"))+exportItem :: ExportDeclaration -> ModuleItem+exportItem = ModuleItemExport+++-- * Programs++-- | Create a module program+-- Example: moduleProgram [importItem (importDecl [importDefault "foo"] "./foo.js"), stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]+moduleProgram :: [ModuleItem] -> Program+moduleProgram body = Program body SourceTypeModule++-- | Create a script program+-- Example: scriptProgram [stmtItem (varDeclStmt (constDecl "x" (Just (intExpr 42))))]+scriptProgram :: [ModuleItem] -> Program+scriptProgram body = Program body SourceTypeScript+++-- * Type Expressions++-- | Create an identifier type expression+-- Example: identType "string"+identType :: String -> TypeExpression+identType = TypeExpressionIdentifier . ident++-- | Create an array type expression+-- Example: arrayType (identType "number")+arrayType :: TypeExpression -> TypeExpression+arrayType = TypeExpressionArray . ArrayTypeExpression++-- | Create a union type expression+-- Example: unionType [identType "string", identType "number"]+unionType :: [TypeExpression] -> TypeExpression+unionType = TypeExpressionUnion++-- | Create an optional type expression+-- Example: optionalType (identType "string")+optionalType :: TypeExpression -> TypeExpression+optionalType = TypeExpressionOptional++-- | Create a parameterized type expression+-- Example: paramType (identType "Array") [identType "string"]+paramType :: TypeExpression -> [TypeExpression] -> TypeExpression+paramType base args = TypeExpressionParameterized $+ ParameterizedTypeExpression base args++-- | The 'any' type+anyType :: TypeExpression+anyType = TypeExpressionAny++-- | The 'void' type+voidType :: TypeExpression+voidType = TypeExpressionVoid++-- | The 'never' type+neverType :: TypeExpression+neverType = TypeExpressionNever+++-- * Comments and Documentation++-- | Create a line comment+-- Example: lineComment "This is a comment"+lineComment :: String -> Comment+lineComment = CommentLine++-- | Create a block comment+-- Example: blockComment "This is a\nmultiline comment"+blockComment :: String -> Comment+blockComment = CommentBlock++-- | Create a documentation comment+-- Example: docComment "Description of the function" [paramTag "x" (Just (identType "number")) "The input value"]+docComment :: String -> [DocumentationTag] -> Comment+docComment desc tags = CommentDocumentation $ DocumentationComment desc tags++-- | Create a @param documentation tag+-- Example: paramTag "x" (Just (identType "number")) "The input value"+paramTag :: String -> Maybe TypeExpression -> String -> DocumentationTag+paramTag name typ desc = DocumentationTag "param" typ (Just $ ident name) desc++-- | Create a @returns documentation tag+-- Example: returnsTag (Just (identType "number")) "The result"+returnsTag :: Maybe TypeExpression -> String -> DocumentationTag+returnsTag typ desc = DocumentationTag "returns" typ Nothing desc++-- | Create a @type documentation tag+-- Example: typeTag (identType "number")+typeTag :: TypeExpression -> DocumentationTag+typeTag typ = DocumentationTag "type" (Just typ) Nothing ""
+ src/main/haskell/Hydra/Typescript/Serde.hs view
@@ -0,0 +1,1083 @@+-- Note: this is an automatically generated file. Do not edit.++-- | Serialization functions for converting TypeScript AST to abstract expressions++module Hydra.Typescript.Serde where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Diff as Diff+import qualified Hydra.Core.Docs as Docs+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.File as ErrorFile+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Error.System as ErrorSystem+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Markdown as Markdown+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Regex as Regex+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.System as System+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Time as Time+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import qualified Hydra.Typescript.Operators as Operators+import qualified Hydra.Typescript.Syntax as Syntax+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | True iff every codepoint is an ASCII digit 0-9, and the list is non-empty+allDigits :: [Int] -> Bool+allDigits cps =+ Logic.and (Ordering.gt (Lists.length cps) 0) (Lists.foldl (\acc -> \c -> Logic.and acc (Logic.and (Ordering.gte c 48) (Ordering.lte c 57))) True cps)++-- | Convert an array element to an AST expression+arrayElementToExpr :: Syntax.ArrayElement -> Ast.Expr+arrayElementToExpr elem =+ case elem of+ Syntax.ArrayElementExpression v0 -> expressionToExpr v0+ Syntax.ArrayElementSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))+ Syntax.ArrayElementHole -> Serialization.cst ""++-- | Convert an array expression to an AST expression+arrayExpressionToExpr :: [Syntax.ArrayElement] -> Ast.Expr+arrayExpressionToExpr arr = Serialization.bracketList Serialization.inlineStyle (Lists.map arrayElementToExpr arr)++-- | Convert an array pattern to an AST expression+arrayPatternToExpr :: [Maybe Syntax.Pattern] -> Ast.Expr+arrayPatternToExpr arr =+ Serialization.bracketList Serialization.inlineStyle (Lists.map (\maybeP -> Optionals.match maybeP (Serialization.cst "") patternToExpr) arr)++-- | Convert an arrow function expression to an AST expression+arrowFunctionExpressionToExpr :: Syntax.ArrowFunctionExpression -> Ast.Expr+arrowFunctionExpressionToExpr arrow =++ let params = Syntax.arrowFunctionExpressionParams arrow+ body = Syntax.arrowFunctionExpressionBody arrow+ async = Syntax.arrowFunctionExpressionAsync arrow+ asyncKw = Logic.ifElse async [+ Serialization.cst "async"] []+ paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+ bodyExpr =+ case body of+ Syntax.ArrowFunctionBodyExpression v0 -> case v0 of+ Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr v0)+ Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr v0)+ _ -> expressionToExpr v0+ Syntax.ArrowFunctionBodyBlock v0 -> blockStatementToExpr v0+ in (Serialization.spaceSep (Lists.concat [+ asyncKw,+ [+ Serialization.ifx Operators.arrowOp paramsExpr bodyExpr]]))++-- | Convert an assignment expression to an AST expression+assignmentExpressionToExpr :: Syntax.AssignmentExpression -> Ast.Expr+assignmentExpressionToExpr assign =++ let op = Syntax.assignmentExpressionOperator assign+ left = Syntax.assignmentExpressionLeft assign+ right = Syntax.assignmentExpressionRight assign+ opStr = assignmentOperatorToString op+ in (Serialization.spaceSep [+ patternToExpr left,+ (Serialization.cst opStr),+ (expressionToExpr right)])++-- | Convert an assignment operator to a string+assignmentOperatorToString :: Syntax.AssignmentOperator -> String+assignmentOperatorToString op =+ case op of+ Syntax.AssignmentOperatorAssign -> "="+ Syntax.AssignmentOperatorAddAssign -> "+="+ Syntax.AssignmentOperatorSubtractAssign -> "-="+ Syntax.AssignmentOperatorMultiplyAssign -> "*="+ Syntax.AssignmentOperatorDivideAssign -> "/="+ Syntax.AssignmentOperatorModuloAssign -> "%="+ Syntax.AssignmentOperatorExponentiateAssign -> "**="+ Syntax.AssignmentOperatorLeftShiftAssign -> "<<="+ Syntax.AssignmentOperatorRightShiftAssign -> ">>="+ Syntax.AssignmentOperatorUnsignedRightShiftAssign -> ">>>="+ Syntax.AssignmentOperatorBitwiseAndAssign -> "&="+ Syntax.AssignmentOperatorBitwiseOrAssign -> "|="+ Syntax.AssignmentOperatorBitwiseXorAssign -> "^="+ Syntax.AssignmentOperatorAndAssign -> "&&="+ Syntax.AssignmentOperatorOrAssign -> "||="+ Syntax.AssignmentOperatorNullishAssign -> "??="++-- | Convert an assignment pattern to an AST expression+assignmentPatternToExpr :: Syntax.AssignmentPattern -> Ast.Expr+assignmentPatternToExpr assign =++ let left = Syntax.assignmentPatternLeft assign+ right = Syntax.assignmentPatternRight assign+ in (Serialization.ifx Operators.defineOp (patternToExpr left) (expressionToExpr right))++-- | Convert a binary expression to an AST expression+binaryExpressionToExpr :: Syntax.BinaryExpression -> Ast.Expr+binaryExpressionToExpr bin =++ let op = Syntax.binaryExpressionOperator bin+ left = Syntax.binaryExpressionLeft bin+ right = Syntax.binaryExpressionRight bin+ in (Serialization.ifx (binaryOperatorToExpr op) (expressionToExpr left) (expressionToExpr right))++-- | Convert a binary operator to an Op+binaryOperatorToExpr :: Syntax.BinaryOperator -> Ast.Op+binaryOperatorToExpr op =+ case op of+ Syntax.BinaryOperatorAdd -> Operators.addOp+ Syntax.BinaryOperatorSubtract -> Operators.subtractOp+ Syntax.BinaryOperatorMultiply -> Operators.multiplyOp+ Syntax.BinaryOperatorDivide -> Operators.divideOp+ Syntax.BinaryOperatorModulo -> Operators.moduloOp+ Syntax.BinaryOperatorExponentiate -> Operators.exponentiateOp+ Syntax.BinaryOperatorEqual -> Operators.equalOp+ Syntax.BinaryOperatorNotEqual -> Operators.notEqualOp+ Syntax.BinaryOperatorStrictEqual -> Operators.strictEqualOp+ Syntax.BinaryOperatorStrictNotEqual -> Operators.strictNotEqualOp+ Syntax.BinaryOperatorLessThan -> Operators.lessThanOp+ Syntax.BinaryOperatorLessThanOrEqual -> Operators.lessThanOrEqualOp+ Syntax.BinaryOperatorGreaterThan -> Operators.greaterThanOp+ Syntax.BinaryOperatorGreaterThanOrEqual -> Operators.greaterThanOrEqualOp+ Syntax.BinaryOperatorAnd -> Operators.logicalAndOp+ Syntax.BinaryOperatorOr -> Operators.logicalOrOp+ Syntax.BinaryOperatorNullishCoalescing -> Operators.nullishCoalescingOp+ Syntax.BinaryOperatorBitwiseAnd -> Operators.bitwiseAndOp+ Syntax.BinaryOperatorBitwiseOr -> Operators.bitwiseOrOp+ Syntax.BinaryOperatorBitwiseXor -> Operators.bitwiseXorOp+ Syntax.BinaryOperatorLeftShift -> Operators.leftShiftOp+ Syntax.BinaryOperatorRightShift -> Operators.rightShiftOp+ Syntax.BinaryOperatorUnsignedRightShift -> Operators.unsignedRightShiftOp+ Syntax.BinaryOperatorIn -> Operators.inOp+ Syntax.BinaryOperatorInstanceof -> Operators.instanceOfOp++-- | Convert a block statement to an AST expression. Renders as `{ stmt1\n stmt2\n ... }` using curlyBlock + newlineSep: statements are separated by newlines, NOT by commas (which curlyBracesList's default would insert and which TypeScript rejects between block statements).+blockStatementToExpr :: [Syntax.Statement] -> Ast.Expr+blockStatementToExpr block =+ Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map statementToExpr block))++-- | Convert a break statement to an AST expression+breakStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr+breakStatementToExpr b =+ Optionals.match b (Serialization.cst "break;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "break",+ (identifierToExpr label)]))++-- | Convert a call expression to an AST expression+callExpressionToExpr :: Syntax.CallExpression -> Ast.Expr+callExpressionToExpr call =++ let callee = Syntax.callExpressionCallee call+ args = Syntax.callExpressionArguments call+ optional = Syntax.callExpressionOptional call+ calleeExpr =+ case callee of+ Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr callee)+ Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr callee)+ Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr callee)+ Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr callee)+ Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr callee)+ Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr callee)+ Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr callee)+ Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr callee)+ _ -> expressionToExpr callee+ argsExpr = Serialization.parenListAdaptive (Lists.map expressionToExpr args)+ optionalDot = Logic.ifElse optional "?." ""+ in (Serialization.spaceSep [+ calleeExpr,+ (Serialization.cst optionalDot),+ argsExpr])++-- | Convert a catch clause to an AST expression+catchClauseToExpr :: Syntax.CatchClause -> Ast.Expr+catchClauseToExpr c =++ let param = Syntax.catchClauseParam c+ body = Syntax.catchClauseBody c+ catchKw =+ Optionals.match param (Serialization.cst "catch") (\p -> Serialization.spaceSep [+ Serialization.cst "catch",+ (Serialization.parens (patternToExpr p))])+ in (Serialization.spaceSep [+ catchKw,+ (blockStatementToExpr body)])++-- | Convert a class declaration to an AST expression+classDeclarationToExpr :: Syntax.ClassDeclaration -> Ast.Expr+classDeclarationToExpr cls =++ let id = Syntax.classDeclarationId cls+ superClass = Syntax.classDeclarationSuperClass cls+ body = Syntax.classDeclarationBody cls+ extendsClause =+ Optionals.match superClass [] (\s -> [+ Serialization.cst "extends",+ (expressionToExpr s)])+ bodyExpr =+ Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map methodDefinitionToExpr body))+ in (Serialization.spaceSep (Lists.concat [+ [+ Serialization.cst "class",+ (identifierToExpr id)],+ extendsClause,+ [+ bodyExpr]]))++-- | Convert a class declaration with comments to an AST expression+classDeclarationWithCommentsToExpr :: Syntax.ClassDeclarationWithComments -> Ast.Expr+classDeclarationWithCommentsToExpr cdwc =++ let body = Syntax.classDeclarationWithCommentsBody cdwc+ mc = Syntax.classDeclarationWithCommentsComments cdwc+ in (Optionals.match mc (classDeclarationToExpr body) (\c -> Serialization.newlineSep [+ documentationCommentToExpr c,+ (classDeclarationToExpr body)]))++-- | Convert a conditional expression to an AST expression+conditionalExpressionToExpr :: Syntax.ConditionalExpression -> Ast.Expr+conditionalExpressionToExpr cond =++ let test = Syntax.conditionalExpressionTest cond+ consequent = Syntax.conditionalExpressionConsequent cond+ alternate = Syntax.conditionalExpressionAlternate cond+ consExpr =+ case consequent of+ Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr consequent)+ Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr consequent)+ _ -> expressionToExpr consequent+ altExpr =+ case alternate of+ Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr alternate)+ Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr alternate)+ _ -> expressionToExpr alternate+ in (Serialization.spaceSep [+ expressionToExpr test,+ (Serialization.cst "?"),+ consExpr,+ (Serialization.cst ":"),+ altExpr])++-- | Convert a continue statement to an AST expression+continueStatementToExpr :: Maybe Syntax.Identifier -> Ast.Expr+continueStatementToExpr c =+ Optionals.match c (Serialization.cst "continue;") (\label -> Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "continue",+ (identifierToExpr label)]))++-- | Convert a do-while statement to an AST expression+doWhileStatementToExpr :: Syntax.DoWhileStatement -> Ast.Expr+doWhileStatementToExpr d =++ let body = Syntax.doWhileStatementBody d+ test = Syntax.doWhileStatementTest d+ in (Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "do",+ (statementToExpr body),+ (Serialization.cst "while"),+ (Serialization.parens (expressionToExpr test))]))++-- | Convert a documentation comment to an AST expression+documentationCommentToExpr :: Syntax.DocumentationComment -> Ast.Expr+documentationCommentToExpr doc =++ let description = Syntax.documentationCommentDescription doc+ tags = Syntax.documentationCommentTags doc+ in (Serialization.cst (toTypeScriptComments description tags))++-- | Convert a documentation tag to a JSDoc line. Built by joining non-empty parts with spaces so that absent type/param/description components don't introduce trailing whitespace.+documentationTagToLine :: Syntax.DocumentationTag -> String+documentationTagToLine tag =++ let name = Syntax.documentationTagName tag+ mtype = Syntax.documentationTagType tag+ mparamName = Syntax.documentationTagParamName tag+ description = Syntax.documentationTagDescription tag+ typePart =+ Optionals.match mtype "" (\t -> Strings.concat [+ "{",+ (typeExpressionToString t),+ "}"])+ paramPart = Optionals.match mparamName "" (\p -> Syntax.unIdentifier p)+ parts =+ [+ Strings.concat2 "@" name,+ typePart,+ paramPart,+ description]+ nonEmpty = Lists.filter (\p -> Logic.not (Equality.equal p "")) parts+ in (Strings.concat2 " * " (Strings.join " " nonEmpty))++-- | Escape special characters in a string for TypeScript+escapeString :: String -> Bool -> String+escapeString s singleQuote =++ let replace = \old -> \new_ -> \str -> Strings.join new_ (Strings.splitOn old str)+ s1 = replace "\\" "\\\\" s+ s2 = replace "\n" "\\n" s1+ s3 = replace "\r" "\\r" s2+ s4 = replace "\t" "\\t" s3+ in (Logic.ifElse singleQuote (replace "'" "\\'" s4) (replace "\"" "\\\"" s4))++-- | Convert an export all declaration to an AST expression+exportAllToExpr :: Syntax.ExportAllDeclaration -> Ast.Expr+exportAllToExpr a =++ let exported = Syntax.exportAllDeclarationExported a+ source = Syntax.exportAllDeclarationSource a+ exportedClause =+ Optionals.match exported (Serialization.cst "*") (\e -> Serialization.spaceSep [+ Serialization.cst "*",+ (Serialization.cst "as"),+ (identifierToExpr e)])+ in (Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "export",+ exportedClause,+ (Serialization.cst "from"),+ (stringLiteralToExpr source)]))++-- | Convert an export declaration to an AST expression+exportDeclarationToExpr :: Syntax.ExportDeclaration -> Ast.Expr+exportDeclarationToExpr exp =+ case exp of+ Syntax.ExportDeclarationNamed v0 -> namedExportToExpr v0+ Syntax.ExportDeclarationDefault v0 -> Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "export",+ (Serialization.cst "default"),+ (expressionToExpr v0)])+ Syntax.ExportDeclarationDeclaration v0 -> Serialization.spaceSep [+ Serialization.cst "export",+ (statementToExpr v0)]+ Syntax.ExportDeclarationAll v0 -> exportAllToExpr v0++-- | Convert an export specifier to an AST expression+exportSpecifierToExpr :: Syntax.ExportSpecifier -> Ast.Expr+exportSpecifierToExpr spec =++ let local = Syntax.exportSpecifierLocal spec+ exported = Syntax.exportSpecifierExported spec+ in (Logic.ifElse (Equality.equal (Syntax.unIdentifier local) (Syntax.unIdentifier exported)) (identifierToExpr local) (Serialization.spaceSep [+ identifierToExpr local,+ (Serialization.cst "as"),+ (identifierToExpr exported)]))++-- | Convert a TypeScript expression to an AST expression+expressionToExpr :: Syntax.Expression -> Ast.Expr+expressionToExpr expr =+ case expr of+ Syntax.ExpressionIdentifier v0 -> identifierToExpr v0+ Syntax.ExpressionLiteral v0 -> literalToExpr v0+ Syntax.ExpressionArray v0 -> arrayExpressionToExpr v0+ Syntax.ExpressionObject v0 -> objectExpressionToExpr v0+ Syntax.ExpressionFunction v0 -> functionExpressionToExpr v0+ Syntax.ExpressionArrow v0 -> arrowFunctionExpressionToExpr v0+ Syntax.ExpressionCall v0 -> callExpressionToExpr v0+ Syntax.ExpressionMember v0 -> memberExpressionToExpr v0+ Syntax.ExpressionConditional v0 -> conditionalExpressionToExpr v0+ Syntax.ExpressionBinary v0 -> binaryExpressionToExpr v0+ Syntax.ExpressionUnary v0 -> unaryExpressionToExpr v0+ Syntax.ExpressionAssignment v0 -> assignmentExpressionToExpr v0+ Syntax.ExpressionSequence v0 -> Serialization.parenListAdaptive (Lists.map expressionToExpr v0)+ Syntax.ExpressionThis -> Serialization.cst "this"+ Syntax.ExpressionNew v0 -> Serialization.spaceSep [+ Serialization.cst "new",+ (callExpressionToExpr v0)]+ Syntax.ExpressionYield v0 -> Optionals.match v0 (Serialization.cst "yield") (\e -> Serialization.spaceSep [+ Serialization.cst "yield",+ (expressionToExpr e)])+ Syntax.ExpressionAwait v0 -> Serialization.spaceSep [+ Serialization.cst "await",+ (expressionToExpr v0)]+ Syntax.ExpressionSpread v0 -> Serialization.prefix "..." (expressionToExpr (Syntax.unSpreadElement v0))+ Syntax.ExpressionParenthesized v0 -> Serialization.parens (expressionToExpr v0)+ Syntax.ExpressionAsExpression v0 ->+ let innerE = Syntax.asExpressionExpression v0+ typ = Syntax.asExpressionType v0+ in (Serialization.parens (Serialization.spaceSep [+ expressionToExpr innerE,+ (Serialization.cst "as"),+ (Serialization.cst (tsTypeExpressionToString typ))]))++-- | Convert a for-in statement to an AST expression+forInStatementToExpr :: Syntax.ForInStatement -> Ast.Expr+forInStatementToExpr f =++ let left = Syntax.forInStatementLeft f+ right = Syntax.forInStatementRight f+ body = Syntax.forInStatementBody f+ leftExpr =+ case left of+ Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0+ Syntax.ForInLeftPattern v0 -> patternToExpr v0+ in (Serialization.spaceSep [+ Serialization.cst "for",+ (Serialization.parens (Serialization.spaceSep [+ leftExpr,+ (Serialization.cst "in"),+ (expressionToExpr right)])),+ (statementToExpr body)])++-- | Convert a for-of statement to an AST expression+forOfStatementToExpr :: Syntax.ForOfStatement -> Ast.Expr+forOfStatementToExpr f =++ let await = Syntax.forOfStatementAwait f+ left = Syntax.forOfStatementLeft f+ right = Syntax.forOfStatementRight f+ body = Syntax.forOfStatementBody f+ forKw = Logic.ifElse await (Serialization.cst "for await") (Serialization.cst "for")+ leftExpr =+ case left of+ Syntax.ForInLeftVariable v0 -> variableDeclarationToExpr v0+ Syntax.ForInLeftPattern v0 -> patternToExpr v0+ in (Serialization.spaceSep [+ forKw,+ (Serialization.parens (Serialization.spaceSep [+ leftExpr,+ (Serialization.cst "of"),+ (expressionToExpr right)])),+ (statementToExpr body)])++-- | Convert a for statement to an AST expression+forStatementToExpr :: Syntax.ForStatement -> Ast.Expr+forStatementToExpr f =++ let init = Syntax.forStatementInit f+ test = Syntax.forStatementTest f+ update = Syntax.forStatementUpdate f+ body = Syntax.forStatementBody f+ initExpr =+ Optionals.match init (Serialization.cst "") (\i -> case i of+ Syntax.ForInitVariable v0 -> variableDeclarationToExpr v0+ Syntax.ForInitExpression v0 -> expressionToExpr v0)+ testExpr = Optionals.match test (Serialization.cst "") expressionToExpr+ updateExpr = Optionals.match update (Serialization.cst "") expressionToExpr+ in (Serialization.spaceSep [+ Serialization.cst "for",+ (Serialization.parenListAdaptive [+ initExpr,+ testExpr,+ updateExpr]),+ (statementToExpr body)])++-- | Format import specifiers, handling default vs named imports+formatImportSpecifiers :: [Ast.Expr] -> Ast.Expr+formatImportSpecifiers specs = Serialization.curlyBracesList Nothing Serialization.inlineStyle specs++-- | Convert a function declaration to an AST expression+functionDeclarationToExpr :: Syntax.FunctionDeclaration -> Ast.Expr+functionDeclarationToExpr fn =++ let id = Syntax.functionDeclarationId fn+ params = Syntax.functionDeclarationParams fn+ body = Syntax.functionDeclarationBody fn+ async = Syntax.functionDeclarationAsync fn+ generator = Syntax.functionDeclarationGenerator fn+ asyncKw = Logic.ifElse async [+ Serialization.cst "async"] []+ funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")+ paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+ retAnnot = Serialization.cst ": any"+ in (Serialization.spaceSep (Lists.concat [+ asyncKw,+ [+ funcKw,+ (identifierToExpr id),+ paramsExpr,+ retAnnot,+ (blockStatementToExpr body)]]))++-- | Convert a function declaration with comments to an AST expression+functionDeclarationWithCommentsToExpr :: Syntax.FunctionDeclarationWithComments -> Ast.Expr+functionDeclarationWithCommentsToExpr fdwc =++ let body = Syntax.functionDeclarationWithCommentsBody fdwc+ mc = Syntax.functionDeclarationWithCommentsComments fdwc+ in (Optionals.match mc (functionDeclarationToExpr body) (\c -> Serialization.newlineSep [+ documentationCommentToExpr c,+ (functionDeclarationToExpr body)]))++-- | Convert a function expression to an AST expression+functionExpressionToExpr :: Syntax.FunctionExpression -> Ast.Expr+functionExpressionToExpr fn =++ let mid = Syntax.functionExpressionId fn+ params = Syntax.functionExpressionParams fn+ body = Syntax.functionExpressionBody fn+ async = Syntax.functionExpressionAsync fn+ generator = Syntax.functionExpressionGenerator fn+ asyncKw = Logic.ifElse async [+ Serialization.cst "async"] []+ funcKw = Logic.ifElse generator (Serialization.cst "function*") (Serialization.cst "function")+ nameExpr = Optionals.match mid [] (\id -> [+ identifierToExpr id])+ paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+ in (Serialization.spaceSep (Lists.concat [+ asyncKw,+ [+ funcKw],+ nameExpr,+ [+ paramsExpr,+ (blockStatementToExpr body)]]))++-- | Convert an identifier to an AST expression+identifierToExpr :: Syntax.Identifier -> Ast.Expr+identifierToExpr id = Serialization.cst (Syntax.unIdentifier id)++-- | Convert an if statement to an AST expression+ifStatementToExpr :: Syntax.IfStatement -> Ast.Expr+ifStatementToExpr ifStmt =++ let test = Syntax.ifStatementTest ifStmt+ consequent = Syntax.ifStatementConsequent ifStmt+ alternate = Syntax.ifStatementAlternate ifStmt+ ifPart =+ Serialization.spaceSep [+ Serialization.cst "if",+ (Serialization.parens (expressionToExpr test)),+ (statementToExpr consequent)]+ in (Optionals.match alternate ifPart (\alt -> Serialization.spaceSep [+ ifPart,+ (Serialization.cst "else"),+ (statementToExpr alt)]))++-- | Convert an import declaration to an AST expression+importDeclarationToExpr :: Syntax.ImportDeclaration -> Ast.Expr+importDeclarationToExpr imp =++ let specifiers = Syntax.importDeclarationSpecifiers imp+ source = Syntax.importDeclarationSource imp+ sourceExpr = stringLiteralToExpr source+ specExprs = Lists.map importSpecifierToExpr specifiers+ in (Logic.ifElse (Lists.isEmpty specifiers) (Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "import",+ sourceExpr])) (Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "import",+ (formatImportSpecifiers specExprs),+ (Serialization.cst "from"),+ sourceExpr])))++-- | Convert an import specifier to an AST expression+importSpecifierToExpr :: Syntax.ImportClause -> Ast.Expr+importSpecifierToExpr spec =+ case spec of+ Syntax.ImportClauseNamed v0 ->+ let imported = Syntax.importSpecifierImported v0+ local = Syntax.importSpecifierLocal v0+ in (Logic.ifElse (Equality.equal (Syntax.unIdentifier imported) (Syntax.unIdentifier local)) (identifierToExpr local) (Serialization.spaceSep [+ identifierToExpr imported,+ (Serialization.cst "as"),+ (identifierToExpr local)]))+ Syntax.ImportClauseDefault v0 -> identifierToExpr (Syntax.unImportDefaultSpecifier v0)+ Syntax.ImportClauseNamespace v0 -> Serialization.spaceSep [+ Serialization.cst "*",+ (Serialization.cst "as"),+ (identifierToExpr (Syntax.unImportNamespaceSpecifier v0))]++-- | Detect a kernel-synthesized type-variable name like T0 or T12, which is unbound in inline type annotations+isKernelTypeVarName :: String -> Bool+isKernelTypeVarName s =++ let cps = Strings.toList s+ len = Lists.length cps+ first = Optionals.withDefault 0 (Lists.head cps)+ rest = Logic.ifElse (Ordering.gt len 0) (Lists.drop 1 cps) []+ in (Logic.and (Ordering.gt len 1) (Logic.and (Equality.equal first 84) (allDigits rest)))++-- | Convert a labeled statement to an AST expression+labeledStatementToExpr :: Syntax.LabeledStatement -> Ast.Expr+labeledStatementToExpr l =++ let label = Syntax.labeledStatementLabel l+ body = Syntax.labeledStatementBody l+ in (Serialization.spaceSep [+ Serialization.suffix ":" (identifierToExpr label),+ (statementToExpr body)])++-- | Convert a literal to an AST expression+literalToExpr :: Syntax.Literal -> Ast.Expr+literalToExpr lit =+ case lit of+ Syntax.LiteralString v0 -> stringLiteralToExpr v0+ Syntax.LiteralNumber v0 -> numericLiteralToExpr v0+ Syntax.LiteralBoolean v0 -> Serialization.cst (Logic.ifElse v0 "true" "false")+ Syntax.LiteralNull -> Serialization.cst "null"+ Syntax.LiteralUndefined -> Serialization.cst "undefined"+ Syntax.LiteralBigInt v0 -> Serialization.cst (Strings.concat2 (Literals.printBigint v0) "n")+ Syntax.LiteralTemplate v0 -> templateLiteralToExpr v0++-- | Convert a member expression to an AST expression+memberExpressionToExpr :: Syntax.MemberExpression -> Ast.Expr+memberExpressionToExpr mem =++ let obj = Syntax.memberExpressionObject mem+ prop = Syntax.memberExpressionProperty mem+ computed = Syntax.memberExpressionComputed mem+ optional = Syntax.memberExpressionOptional mem+ objExpr =+ case obj of+ Syntax.ExpressionArrow _ -> Serialization.parens (expressionToExpr obj)+ Syntax.ExpressionConditional _ -> Serialization.parens (expressionToExpr obj)+ Syntax.ExpressionBinary _ -> Serialization.parens (expressionToExpr obj)+ Syntax.ExpressionUnary _ -> Serialization.parens (expressionToExpr obj)+ Syntax.ExpressionAssignment _ -> Serialization.parens (expressionToExpr obj)+ Syntax.ExpressionSequence _ -> Serialization.parens (expressionToExpr obj)+ Syntax.ExpressionObject _ -> Serialization.parens (expressionToExpr obj)+ Syntax.ExpressionFunction _ -> Serialization.parens (expressionToExpr obj)+ _ -> expressionToExpr obj+ propExpr = expressionToExpr prop+ in (Logic.ifElse computed (Serialization.spaceSep [+ objExpr,+ (Logic.ifElse optional (Serialization.cst "?.") (Serialization.cst "")),+ (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle propExpr)]) (Serialization.ifx (Logic.ifElse optional Operators.optionalChainOp Operators.memberOp) objExpr propExpr))++-- | Convert a method definition to an AST expression+methodDefinitionToExpr :: Syntax.MethodDefinition -> Ast.Expr+methodDefinitionToExpr method =++ let key = Syntax.methodDefinitionKey method+ value = Syntax.methodDefinitionValue method+ kind = Syntax.methodDefinitionKind method+ computed = Syntax.methodDefinitionComputed method+ static = Syntax.methodDefinitionStatic method+ staticKw = Logic.ifElse static [+ Serialization.cst "static"] []+ kindKw =+ case kind of+ Syntax.MethodKindConstructor -> []+ Syntax.MethodKindMethod -> []+ Syntax.MethodKindGet -> [+ Serialization.cst "get"]+ Syntax.MethodKindSet -> [+ Serialization.cst "set"]+ keyExpr =+ Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)+ params = Syntax.functionExpressionParams value+ body = Syntax.functionExpressionBody value+ paramsExpr = Serialization.parenListAdaptive (Lists.map patternToExpr params)+ in (Serialization.spaceSep (Lists.concat [+ staticKw,+ kindKw,+ [+ keyExpr,+ paramsExpr,+ (blockStatementToExpr body)]]))++-- | Convert a module item to an AST expression+moduleItemToExpr :: Syntax.ModuleItem -> Ast.Expr+moduleItemToExpr item =+ case item of+ Syntax.ModuleItemStatement v0 -> statementToExpr v0+ Syntax.ModuleItemImport v0 -> importDeclarationToExpr v0+ Syntax.ModuleItemExport v0 -> exportDeclarationToExpr v0++-- | Convert a module item with comments to an AST expression+moduleItemWithCommentsToExpr :: Syntax.ModuleItemWithComments -> Ast.Expr+moduleItemWithCommentsToExpr miwc =++ let body = Syntax.moduleItemWithCommentsBody miwc+ mc = Syntax.moduleItemWithCommentsComments miwc+ in (Optionals.match mc (moduleItemToExpr body) (\c -> Serialization.newlineSep [+ documentationCommentToExpr c,+ (moduleItemToExpr body)]))++-- | Convert a named export to an AST expression+namedExportToExpr :: Syntax.NamedExport -> Ast.Expr+namedExportToExpr n =++ let specifiers = Syntax.namedExportSpecifiers n+ source = Syntax.namedExportSource n+ specExprs = Lists.map exportSpecifierToExpr specifiers+ fromClause =+ Optionals.match source [] (\s -> [+ Serialization.cst "from",+ (stringLiteralToExpr s)])+ in (Serialization.suffix ";" (Serialization.spaceSep (Lists.concat [+ [+ Serialization.cst "export"],+ [+ Serialization.curlyBracesList Nothing Serialization.inlineStyle specExprs],+ fromClause])))++-- | Convert a numeric literal to an AST expression+numericLiteralToExpr :: Syntax.NumericLiteral -> Ast.Expr+numericLiteralToExpr n =+ case n of+ Syntax.NumericLiteralInteger v0 -> Serialization.cst (Literals.printInt64 v0)+ Syntax.NumericLiteralFloat v0 -> Serialization.cst (Literals.printFloat64 v0)++-- | Convert an object expression to an AST expression+objectExpressionToExpr :: [Syntax.Property] -> Ast.Expr+objectExpressionToExpr obj =+ Serialization.curlyBracesList Nothing Serialization.halfBlockStyle (Lists.map propertyToExpr obj)++-- | Convert an object pattern property to an AST expression+objectPatternPropertyToExpr :: Syntax.ObjectPatternProperty -> Ast.Expr+objectPatternPropertyToExpr prop =+ case prop of+ Syntax.ObjectPatternPropertyProperty v0 -> propertyToExpr v0+ Syntax.ObjectPatternPropertyRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))++-- | Convert an object pattern to an AST expression+objectPatternToExpr :: Syntax.ObjectPattern -> Ast.Expr+objectPatternToExpr obj =++ let props = Syntax.objectPatternProperties obj+ in (Serialization.curlyBracesList Nothing Serialization.inlineStyle (Lists.map objectPatternPropertyToExpr props))++-- | Convert a pattern to an AST expression+patternToExpr :: Syntax.Pattern -> Ast.Expr+patternToExpr pat =+ case pat of+ Syntax.PatternIdentifier v0 -> identifierToExpr v0+ Syntax.PatternObject v0 -> objectPatternToExpr v0+ Syntax.PatternArray v0 -> arrayPatternToExpr v0+ Syntax.PatternAssignment v0 -> assignmentPatternToExpr v0+ Syntax.PatternRest v0 -> Serialization.prefix "..." (patternToExpr (Syntax.unRestElement v0))+ Syntax.PatternTyped v0 -> typedPatternToExpr v0++-- | Render a TS.Pattern as a plain string+patternToString :: Syntax.Pattern -> String+patternToString pat =+ case pat of+ Syntax.PatternIdentifier v0 -> Syntax.unIdentifier v0+ Syntax.PatternRest v0 -> Strings.concat2 "..." (patternToString (Syntax.unRestElement v0))+ Syntax.PatternTyped v0 -> Strings.concat [+ patternToString (Syntax.typedPatternPattern v0),+ ": ",+ (tsTypeExpressionToString (Syntax.typedPatternType v0))]+ _ -> "_"++-- | Convert a TypeScript program to an AST expression+programToExpr :: Syntax.Program -> Ast.Expr+programToExpr prog =++ let body = Syntax.programBody prog+ warning = [+ Serialization.cst (toLineComment Constants.warningAutoGeneratedFile)]+ items = Lists.map moduleItemToExpr body+ in (Serialization.doubleNewlineSep (Lists.concat [+ warning,+ items]))++-- | Convert an object property to an AST expression+propertyToExpr :: Syntax.Property -> Ast.Expr+propertyToExpr prop =++ let key = Syntax.propertyKey prop+ value = Syntax.propertyValue prop+ shorthand = Syntax.propertyShorthand prop+ computed = Syntax.propertyComputed prop+ keyExpr =+ Logic.ifElse computed (Serialization.brackets Serialization.squareBrackets Serialization.inlineStyle (expressionToExpr key)) (expressionToExpr key)+ in (Logic.ifElse shorthand keyExpr (Serialization.ifx Operators.colonOp keyExpr (expressionToExpr value)))++-- | Convert a return statement to an AST expression+returnStatementToExpr :: Maybe Syntax.Expression -> Ast.Expr+returnStatementToExpr r =+ Optionals.match r (Serialization.cst "return;") (\e -> Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "return",+ (expressionToExpr e)]))++-- | Convert a statement to an AST expression+statementToExpr :: Syntax.Statement -> Ast.Expr+statementToExpr stmt =+ case stmt of+ Syntax.StatementExpression v0 -> Serialization.suffix ";" (expressionToExpr v0)+ Syntax.StatementBlock v0 -> blockStatementToExpr v0+ Syntax.StatementEmpty -> Serialization.cst ";"+ Syntax.StatementDebugger -> Serialization.cst "debugger;"+ Syntax.StatementReturn v0 -> returnStatementToExpr v0+ Syntax.StatementBreak v0 -> breakStatementToExpr v0+ Syntax.StatementContinue v0 -> continueStatementToExpr v0+ Syntax.StatementIf v0 -> ifStatementToExpr v0+ Syntax.StatementSwitch v0 -> switchStatementToExpr v0+ Syntax.StatementThrow v0 -> throwStatementToExpr v0+ Syntax.StatementTry v0 -> tryStatementToExpr v0+ Syntax.StatementWhile v0 -> whileStatementToExpr v0+ Syntax.StatementDoWhile v0 -> doWhileStatementToExpr v0+ Syntax.StatementFor v0 -> forStatementToExpr v0+ Syntax.StatementForIn v0 -> forInStatementToExpr v0+ Syntax.StatementForOf v0 -> forOfStatementToExpr v0+ Syntax.StatementVariableDeclaration v0 -> variableDeclarationToExpr v0+ Syntax.StatementFunctionDeclaration v0 -> functionDeclarationToExpr v0+ Syntax.StatementClassDeclaration v0 -> classDeclarationToExpr v0+ Syntax.StatementLabeled v0 -> labeledStatementToExpr v0++-- | Convert a string literal to an AST expression+stringLiteralToExpr :: Syntax.StringLiteral -> Ast.Expr+stringLiteralToExpr s =++ let value = Syntax.stringLiteralValue s+ singleQuote = Syntax.stringLiteralSingleQuote s+ quote = Logic.ifElse singleQuote "'" "\""+ escaped = escapeString value singleQuote+ in (Serialization.cst (Strings.concat [+ quote,+ escaped,+ quote]))++-- | Convert a switch case to an AST expression+switchCaseToExpr :: Syntax.SwitchCase -> Ast.Expr+switchCaseToExpr c =++ let test = Syntax.switchCaseTest c+ consequent = Syntax.switchCaseConsequent c+ caseLabel =+ Optionals.match test (Serialization.cst "default:") (\t -> Serialization.spaceSep [+ Serialization.cst "case",+ (expressionToExpr t),+ (Serialization.cst ":")])+ in (Serialization.newlineSep (Lists.cons caseLabel (Lists.map statementToExpr consequent)))++-- | Convert a switch statement to an AST expression+switchStatementToExpr :: Syntax.SwitchStatement -> Ast.Expr+switchStatementToExpr switchStmt =++ let discriminant = Syntax.switchStatementDiscriminant switchStmt+ match = Syntax.switchStatementCases switchStmt+ in (Serialization.spaceSep [+ Serialization.cst "switch",+ (Serialization.parens (expressionToExpr discriminant)),+ (Serialization.curlyBlock Serialization.fullBlockStyle (Serialization.newlineSep (Lists.map switchCaseToExpr match)))])++-- | Convert a template literal to an AST expression+templateLiteralToExpr :: Syntax.TemplateLiteral -> Ast.Expr+templateLiteralToExpr t =++ let quasis = Syntax.templateLiteralQuasis t+ exprs = Syntax.templateLiteralExpressions t+ in (Serialization.cst (Strings.concat [+ "`",+ (Strings.join "" (Lists.map (\q -> Syntax.templateElementValue q) quasis)),+ "`"]))++-- | Convert a throw statement to an AST expression+throwStatementToExpr :: Syntax.ThrowStatement -> Ast.Expr+throwStatementToExpr t =+ Serialization.suffix ";" (Serialization.spaceSep [+ Serialization.cst "throw",+ (expressionToExpr (Syntax.unThrowStatement t))])++-- | Convert a string to a TypeScript line comment. Empty source lines emit `//` (no trailing space).+toLineComment :: String -> String+toLineComment s =+ Strings.join "\n" (Lists.map (\line -> Logic.ifElse (Equality.equal line "") "//" (Strings.concat2 "// " line)) (Formatting.lines s))++-- | Format a description and tags as a JSDoc comment. Empty doc lines emit ` *` (no trailing space) so blank lines don't carry trailing whitespace.+toTypeScriptComments :: String -> [Syntax.DocumentationTag] -> String+toTypeScriptComments desc tags =++ let descLines =+ Logic.ifElse (Equality.equal desc "") [] (Lists.map (\line -> Logic.ifElse (Equality.equal line "") " *" (Strings.concat2 " * " line)) (Formatting.lines desc))+ tagLines = Lists.map documentationTagToLine tags+ allLines =+ Lists.concat [+ descLines,+ tagLines]+ in (Logic.ifElse (Lists.isEmpty allLines) "" (Strings.join "\n" (Lists.concat [+ [+ "/**"],+ allLines,+ [+ " */"]])))++-- | Convert a try statement to an AST expression+tryStatementToExpr :: Syntax.TryStatement -> Ast.Expr+tryStatementToExpr t =++ let block = Syntax.tryStatementBlock t+ handler = Syntax.tryStatementHandler t+ finalizer = Syntax.tryStatementFinalizer t+ tryPart =+ Serialization.spaceSep [+ Serialization.cst "try",+ (blockStatementToExpr block)]+ catchPart = Optionals.match handler [] (\c -> [+ catchClauseToExpr c])+ finallyPart =+ Optionals.match finalizer [] (\f -> [+ Serialization.spaceSep [+ Serialization.cst "finally",+ (blockStatementToExpr f)]])+ in (Serialization.spaceSep (Lists.concat [+ [+ tryPart],+ catchPart,+ finallyPart]))++-- | Render a TypeScript type expression as a string in TS syntax+tsTypeExpressionToString :: Syntax.TypeExpression -> String+tsTypeExpressionToString t =+ case t of+ Syntax.TypeExpressionIdentifier v0 ->+ let raw = Syntax.unIdentifier v0+ in (Logic.ifElse (isKernelTypeVarName raw) "any" raw)+ Syntax.TypeExpressionAny -> "any"+ Syntax.TypeExpressionVoid -> "void"+ Syntax.TypeExpressionNever -> "never"+ Syntax.TypeExpressionArray v0 -> Strings.concat [+ "ReadonlyArray<",+ (tsTypeExpressionToString (Syntax.unArrayTypeExpression v0)),+ ">"]+ Syntax.TypeExpressionTuple v0 -> Strings.concat [+ "readonly [",+ (Strings.join ", " (Lists.map tsTypeExpressionToString v0)),+ "]"]+ Syntax.TypeExpressionUnion v0 -> Strings.join " | " (Lists.map tsTypeExpressionToString v0)+ Syntax.TypeExpressionIntersection v0 -> Strings.join " & " (Lists.map tsTypeExpressionToString v0)+ Syntax.TypeExpressionParameterized v0 -> Strings.concat [+ tsTypeExpressionToString (Syntax.parameterizedTypeExpressionBase v0),+ "<",+ (Strings.join ", " (Lists.map tsTypeExpressionToString (Syntax.parameterizedTypeExpressionArguments v0))),+ ">"]+ Syntax.TypeExpressionOptional v0 -> Strings.concat [+ tsTypeExpressionToString v0,+ " | undefined"]+ Syntax.TypeExpressionReadonly v0 -> Strings.concat2 "readonly " (tsTypeExpressionToString v0)+ Syntax.TypeExpressionUnknown -> "unknown"+ Syntax.TypeExpressionFunction _ -> "((...args: any[]) => any)"+ _ -> "unknown"++-- | Convert a type expression to a string for JSDoc+typeExpressionToString :: Syntax.TypeExpression -> String+typeExpressionToString typ =+ case typ of+ Syntax.TypeExpressionIdentifier v0 -> Syntax.unIdentifier v0+ Syntax.TypeExpressionAny -> "*"+ Syntax.TypeExpressionVoid -> "void"+ Syntax.TypeExpressionNever -> "never"+ Syntax.TypeExpressionLiteral _ -> "literal"+ Syntax.TypeExpressionArray v0 -> Strings.concat2 (typeExpressionToString (Syntax.unArrayTypeExpression v0)) "[]"+ Syntax.TypeExpressionFunction v0 ->+ let params = Syntax.functionTypeExpressionParameters v0+ rt = Syntax.functionTypeExpressionReturnType v0+ rendered =+ Pairs.second (Lists.foldl (\acc -> \p ->+ let i = Pairs.first acc+ soFar = Pairs.second acc+ this =+ Strings.concat [+ "_a",+ (Literals.printInt32 i),+ ": ",+ (typeExpressionToString p)]+ in (Math.add i 1, (Lists.concat2 soFar (Lists.singleton this)))) (0, []) params)+ in (Strings.concat [+ "(",+ (Strings.join ", " rendered),+ ") => ",+ (typeExpressionToString rt)])+ Syntax.TypeExpressionObject _ -> "Object"+ Syntax.TypeExpressionUnion v0 -> Strings.join "|" (Lists.map typeExpressionToString v0)+ Syntax.TypeExpressionParameterized v0 ->+ let base = Syntax.parameterizedTypeExpressionBase v0+ args = Syntax.parameterizedTypeExpressionArguments v0+ in (Strings.concat [+ typeExpressionToString base,+ "<",+ (Strings.join ", " (Lists.map typeExpressionToString args)),+ ">"])+ Syntax.TypeExpressionOptional v0 -> Strings.concat2 "?" (typeExpressionToString v0)++-- | Render `<pattern>: <type>` (TypeScript parameter / variable type annotation)+typedPatternToExpr :: Syntax.TypedPattern -> Ast.Expr+typedPatternToExpr tp =++ let innerPat = Syntax.typedPatternPattern tp+ typ = Syntax.typedPatternType tp+ innerStr = patternToString innerPat+ typeStr = tsTypeExpressionToString typ+ in (Serialization.cst (Strings.concat [+ innerStr,+ ": ",+ typeStr]))++-- | Convert a unary expression to an AST expression+unaryExpressionToExpr :: Syntax.UnaryExpression -> Ast.Expr+unaryExpressionToExpr un =++ let op = Syntax.unaryExpressionOperator un+ arg = Syntax.unaryExpressionArgument un+ prefix = Syntax.unaryExpressionPrefix un+ opStr = unaryOperatorToString op+ argExpr = expressionToExpr arg+ in (Logic.ifElse prefix (Serialization.prefix opStr argExpr) (Serialization.suffix opStr argExpr))++-- | Convert a unary operator to a string+unaryOperatorToString :: Syntax.UnaryOperator -> String+unaryOperatorToString op =+ case op of+ Syntax.UnaryOperatorNegate -> "-"+ Syntax.UnaryOperatorPlus -> "+"+ Syntax.UnaryOperatorNot -> "!"+ Syntax.UnaryOperatorBitwiseNot -> "~"+ Syntax.UnaryOperatorTypeof -> "typeof "+ Syntax.UnaryOperatorVoid -> "void "+ Syntax.UnaryOperatorDelete -> "delete "+ Syntax.UnaryOperatorIncrement -> "++"+ Syntax.UnaryOperatorDecrement -> "--"++-- | Convert a variable declaration to an AST expression+variableDeclarationToExpr :: Syntax.VariableDeclaration -> Ast.Expr+variableDeclarationToExpr decl =++ let kind = Syntax.variableDeclarationKind decl+ declarations = Syntax.variableDeclarationDeclarations decl+ in (Serialization.suffix ";" (Serialization.spaceSep [+ variableKindToExpr kind,+ (Serialization.commaSep Serialization.inlineStyle (Lists.map variableDeclaratorToExpr declarations))]))++-- | Convert a variable declarator to an AST expression+variableDeclaratorToExpr :: Syntax.VariableDeclarator -> Ast.Expr+variableDeclaratorToExpr decl =++ let id = Syntax.variableDeclaratorId decl+ init = Syntax.variableDeclaratorInit decl+ in (Optionals.match init (patternToExpr id) (\e -> Serialization.ifx Operators.defineOp (patternToExpr id) (expressionToExpr e)))++-- | Convert a variable kind to an AST expression+variableKindToExpr :: Syntax.VariableKind -> Ast.Expr+variableKindToExpr kind =+ case kind of+ Syntax.VariableKindVar -> Serialization.cst "var"+ Syntax.VariableKindLet -> Serialization.cst "let"+ Syntax.VariableKindConst -> Serialization.cst "const"++-- | Convert a while statement to an AST expression+whileStatementToExpr :: Syntax.WhileStatement -> Ast.Expr+whileStatementToExpr w =++ let test = Syntax.whileStatementTest w+ body = Syntax.whileStatementBody w+ in (Serialization.spaceSep [+ Serialization.cst "while",+ (Serialization.parens (expressionToExpr test)),+ (statementToExpr body)])
+ src/main/haskell/Hydra/Typescript/Syntax.hs view
@@ -0,0 +1,1730 @@+-- Note: this is an automatically generated file. Do not edit.++-- | A TypeScript 5.x syntax model for Hydra code generation++module Hydra.Typescript.Syntax where++import qualified Hydra.Core.Model as Model+import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Int as I++-- | An element in an array expression+data ArrayElement =+ -- | A regular expression element+ ArrayElementExpression Expression |+ -- | A spread element ...x+ ArrayElementSpread SpreadElement |+ -- | An empty slot (elision)+ ArrayElementHole+ deriving (Eq, Ord, Read, Show)++_ArrayElement = Model.Name "hydra.typescript.syntax.ArrayElement"++_ArrayElement_expression = Model.Name "expression"++_ArrayElement_spread = Model.Name "spread"++_ArrayElement_hole = Model.Name "hole"++-- | An array expression [a, b, c]+type ArrayExpression = [ArrayElement]++_ArrayExpression = Model.Name "hydra.typescript.syntax.ArrayExpression"++-- | An array destructuring pattern [a, b, c]+type ArrayPattern = [Maybe Pattern]++_ArrayPattern = Model.Name "hydra.typescript.syntax.ArrayPattern"++-- | An array type (T[])+newtype ArrayTypeExpression =+ ArrayTypeExpression {+ unArrayTypeExpression :: TypeExpression}+ deriving (Eq, Ord, Read, Show)++_ArrayTypeExpression = Model.Name "hydra.typescript.syntax.ArrayTypeExpression"++-- | The body of an arrow function (expression or block)+data ArrowFunctionBody =+ ArrowFunctionBodyExpression Expression |+ ArrowFunctionBodyBlock BlockStatement+ deriving (Eq, Ord, Read, Show)++_ArrowFunctionBody = Model.Name "hydra.typescript.syntax.ArrowFunctionBody"++_ArrowFunctionBody_expression = Model.Name "expression"++_ArrowFunctionBody_block = Model.Name "block"++-- | An arrow function expression+data ArrowFunctionExpression =+ ArrowFunctionExpression {+ -- | Function parameters+ arrowFunctionExpressionParams :: [Pattern],+ -- | Function body (expression or block)+ arrowFunctionExpressionBody :: ArrowFunctionBody,+ -- | Whether the function is async+ arrowFunctionExpressionAsync :: Bool}+ deriving (Eq, Ord, Read, Show)++_ArrowFunctionExpression = Model.Name "hydra.typescript.syntax.ArrowFunctionExpression"++_ArrowFunctionExpression_params = Model.Name "params"++_ArrowFunctionExpression_body = Model.Name "body"++_ArrowFunctionExpression_async = Model.Name "async"++-- | A TypeScript `<expression> as <type>` cast+data AsExpression =+ AsExpression {+ -- | The expression being cast+ asExpressionExpression :: Expression,+ -- | The target type+ asExpressionType :: TypeExpression}+ deriving (Eq, Ord, Read, Show)++_AsExpression = Model.Name "hydra.typescript.syntax.AsExpression"++_AsExpression_expression = Model.Name "expression"++_AsExpression_type = Model.Name "type"++-- | An assignment expression+data AssignmentExpression =+ AssignmentExpression {+ assignmentExpressionOperator :: AssignmentOperator,+ assignmentExpressionLeft :: Pattern,+ assignmentExpressionRight :: Expression}+ deriving (Eq, Ord, Read, Show)++_AssignmentExpression = Model.Name "hydra.typescript.syntax.AssignmentExpression"++_AssignmentExpression_operator = Model.Name "operator"++_AssignmentExpression_left = Model.Name "left"++_AssignmentExpression_right = Model.Name "right"++-- | An assignment operator+data AssignmentOperator =+ -- | =+ AssignmentOperatorAssign |+ -- | +=+ AssignmentOperatorAddAssign |+ -- | -=+ AssignmentOperatorSubtractAssign |+ -- | *=+ AssignmentOperatorMultiplyAssign |+ -- | /=+ AssignmentOperatorDivideAssign |+ -- | %=+ AssignmentOperatorModuloAssign |+ -- | **=+ AssignmentOperatorExponentiateAssign |+ -- | <<=+ AssignmentOperatorLeftShiftAssign |+ -- | >>=+ AssignmentOperatorRightShiftAssign |+ -- | >>>=+ AssignmentOperatorUnsignedRightShiftAssign |+ -- | &=+ AssignmentOperatorBitwiseAndAssign |+ -- | |=+ AssignmentOperatorBitwiseOrAssign |+ -- | ^=+ AssignmentOperatorBitwiseXorAssign |+ -- | &&=+ AssignmentOperatorAndAssign |+ -- | ||=+ AssignmentOperatorOrAssign |+ -- | ??=+ AssignmentOperatorNullishAssign+ deriving (Eq, Ord, Read, Show)++_AssignmentOperator = Model.Name "hydra.typescript.syntax.AssignmentOperator"++_AssignmentOperator_assign = Model.Name "assign"++_AssignmentOperator_addAssign = Model.Name "addAssign"++_AssignmentOperator_subtractAssign = Model.Name "subtractAssign"++_AssignmentOperator_multiplyAssign = Model.Name "multiplyAssign"++_AssignmentOperator_divideAssign = Model.Name "divideAssign"++_AssignmentOperator_moduloAssign = Model.Name "moduloAssign"++_AssignmentOperator_exponentiateAssign = Model.Name "exponentiateAssign"++_AssignmentOperator_leftShiftAssign = Model.Name "leftShiftAssign"++_AssignmentOperator_rightShiftAssign = Model.Name "rightShiftAssign"++_AssignmentOperator_unsignedRightShiftAssign = Model.Name "unsignedRightShiftAssign"++_AssignmentOperator_bitwiseAndAssign = Model.Name "bitwiseAndAssign"++_AssignmentOperator_bitwiseOrAssign = Model.Name "bitwiseOrAssign"++_AssignmentOperator_bitwiseXorAssign = Model.Name "bitwiseXorAssign"++_AssignmentOperator_andAssign = Model.Name "andAssign"++_AssignmentOperator_orAssign = Model.Name "orAssign"++_AssignmentOperator_nullishAssign = Model.Name "nullishAssign"++-- | A pattern with default value (param = default)+data AssignmentPattern =+ AssignmentPattern {+ assignmentPatternLeft :: Pattern,+ assignmentPatternRight :: Expression}+ deriving (Eq, Ord, Read, Show)++_AssignmentPattern = Model.Name "hydra.typescript.syntax.AssignmentPattern"++_AssignmentPattern_left = Model.Name "left"++_AssignmentPattern_right = Model.Name "right"++-- | A binary operation expression+data BinaryExpression =+ BinaryExpression {+ binaryExpressionOperator :: BinaryOperator,+ binaryExpressionLeft :: Expression,+ binaryExpressionRight :: Expression}+ deriving (Eq, Ord, Read, Show)++_BinaryExpression = Model.Name "hydra.typescript.syntax.BinaryExpression"++_BinaryExpression_operator = Model.Name "operator"++_BinaryExpression_left = Model.Name "left"++_BinaryExpression_right = Model.Name "right"++-- | A binary operator+data BinaryOperator =+ -- | ++ BinaryOperatorAdd |+ -- | -+ BinaryOperatorSubtract |+ -- | *+ BinaryOperatorMultiply |+ -- | /+ BinaryOperatorDivide |+ -- | %+ BinaryOperatorModulo |+ -- | **+ BinaryOperatorExponentiate |+ -- | ==+ BinaryOperatorEqual |+ -- | !=+ BinaryOperatorNotEqual |+ -- | ===+ BinaryOperatorStrictEqual |+ -- | !==+ BinaryOperatorStrictNotEqual |+ -- | <+ BinaryOperatorLessThan |+ -- | <=+ BinaryOperatorLessThanOrEqual |+ -- | >+ BinaryOperatorGreaterThan |+ -- | >=+ BinaryOperatorGreaterThanOrEqual |+ -- | &&+ BinaryOperatorAnd |+ -- | ||+ BinaryOperatorOr |+ -- | ??+ BinaryOperatorNullishCoalescing |+ -- | &+ BinaryOperatorBitwiseAnd |+ -- | |+ BinaryOperatorBitwiseOr |+ -- | ^+ BinaryOperatorBitwiseXor |+ -- | <<+ BinaryOperatorLeftShift |+ -- | >>+ BinaryOperatorRightShift |+ -- | >>>+ BinaryOperatorUnsignedRightShift |+ -- | in+ BinaryOperatorIn |+ -- | instanceof+ BinaryOperatorInstanceof+ deriving (Eq, Ord, Read, Show)++_BinaryOperator = Model.Name "hydra.typescript.syntax.BinaryOperator"++_BinaryOperator_add = Model.Name "add"++_BinaryOperator_subtract = Model.Name "subtract"++_BinaryOperator_multiply = Model.Name "multiply"++_BinaryOperator_divide = Model.Name "divide"++_BinaryOperator_modulo = Model.Name "modulo"++_BinaryOperator_exponentiate = Model.Name "exponentiate"++_BinaryOperator_equal = Model.Name "equal"++_BinaryOperator_notEqual = Model.Name "notEqual"++_BinaryOperator_strictEqual = Model.Name "strictEqual"++_BinaryOperator_strictNotEqual = Model.Name "strictNotEqual"++_BinaryOperator_lessThan = Model.Name "lessThan"++_BinaryOperator_lessThanOrEqual = Model.Name "lessThanOrEqual"++_BinaryOperator_greaterThan = Model.Name "greaterThan"++_BinaryOperator_greaterThanOrEqual = Model.Name "greaterThanOrEqual"++_BinaryOperator_and = Model.Name "and"++_BinaryOperator_or = Model.Name "or"++_BinaryOperator_nullishCoalescing = Model.Name "nullishCoalescing"++_BinaryOperator_bitwiseAnd = Model.Name "bitwiseAnd"++_BinaryOperator_bitwiseOr = Model.Name "bitwiseOr"++_BinaryOperator_bitwiseXor = Model.Name "bitwiseXor"++_BinaryOperator_leftShift = Model.Name "leftShift"++_BinaryOperator_rightShift = Model.Name "rightShift"++_BinaryOperator_unsignedRightShift = Model.Name "unsignedRightShift"++_BinaryOperator_in = Model.Name "in"++_BinaryOperator_instanceof = Model.Name "instanceof"++-- | A block statement { ... }+type BlockStatement = [Statement]++_BlockStatement = Model.Name "hydra.typescript.syntax.BlockStatement"++-- | A break statement+type BreakStatement = (Maybe Identifier)++_BreakStatement = Model.Name "hydra.typescript.syntax.BreakStatement"++-- | A function call expression+data CallExpression =+ CallExpression {+ -- | The function being called+ callExpressionCallee :: Expression,+ -- | The arguments+ callExpressionArguments :: [Expression],+ -- | Whether using optional chaining (?.)+ callExpressionOptional :: Bool}+ deriving (Eq, Ord, Read, Show)++_CallExpression = Model.Name "hydra.typescript.syntax.CallExpression"++_CallExpression_callee = Model.Name "callee"++_CallExpression_arguments = Model.Name "arguments"++_CallExpression_optional = Model.Name "optional"++-- | A catch clause+data CatchClause =+ CatchClause {+ -- | The catch parameter (can be omitted in ES2019+)+ catchClauseParam :: (Maybe Pattern),+ catchClauseBody :: BlockStatement}+ deriving (Eq, Ord, Read, Show)++_CatchClause = Model.Name "hydra.typescript.syntax.CatchClause"++_CatchClause_param = Model.Name "param"++_CatchClause_body = Model.Name "body"++-- | A class body+type ClassBody = [MethodDefinition]++_ClassBody = Model.Name "hydra.typescript.syntax.ClassBody"++-- | A class declaration+data ClassDeclaration =+ ClassDeclaration {+ -- | Class name+ classDeclarationId :: Identifier,+ -- | Optional superclass+ classDeclarationSuperClass :: (Maybe Expression),+ -- | Class body+ classDeclarationBody :: ClassBody}+ deriving (Eq, Ord, Read, Show)++_ClassDeclaration = Model.Name "hydra.typescript.syntax.ClassDeclaration"++_ClassDeclaration_id = Model.Name "id"++_ClassDeclaration_superClass = Model.Name "superClass"++_ClassDeclaration_body = Model.Name "body"++-- | A class declaration with optional JSDoc+data ClassDeclarationWithComments =+ ClassDeclarationWithComments {+ -- | The class declaration+ classDeclarationWithCommentsBody :: ClassDeclaration,+ -- | Optional JSDoc comment+ classDeclarationWithCommentsComments :: (Maybe DocumentationComment)}+ deriving (Eq, Ord, Read, Show)++_ClassDeclarationWithComments = Model.Name "hydra.typescript.syntax.ClassDeclarationWithComments"++_ClassDeclarationWithComments_body = Model.Name "body"++_ClassDeclarationWithComments_comments = Model.Name "comments"++-- | A TypeScript comment+data Comment =+ -- | A single-line comment (// ...)+ CommentLine String |+ -- | A block comment, delimited by slash-star and star-slash+ CommentBlock String |+ -- | A documentation comment, delimited by slash-double-star and star-slash (JSDoc)+ CommentDocumentation DocumentationComment+ deriving (Eq, Ord, Read, Show)++_Comment = Model.Name "hydra.typescript.syntax.Comment"++_Comment_line = Model.Name "line"++_Comment_block = Model.Name "block"++_Comment_documentation = Model.Name "documentation"++-- | A conditional (ternary) expression: test ? consequent : alternate+data ConditionalExpression =+ ConditionalExpression {+ conditionalExpressionTest :: Expression,+ conditionalExpressionConsequent :: Expression,+ conditionalExpressionAlternate :: Expression}+ deriving (Eq, Ord, Read, Show)++_ConditionalExpression = Model.Name "hydra.typescript.syntax.ConditionalExpression"++_ConditionalExpression_test = Model.Name "test"++_ConditionalExpression_consequent = Model.Name "consequent"++_ConditionalExpression_alternate = Model.Name "alternate"++-- | A continue statement+type ContinueStatement = (Maybe Identifier)++_ContinueStatement = Model.Name "hydra.typescript.syntax.ContinueStatement"++-- | A do-while statement+data DoWhileStatement =+ DoWhileStatement {+ doWhileStatementBody :: Statement,+ doWhileStatementTest :: Expression}+ deriving (Eq, Ord, Read, Show)++_DoWhileStatement = Model.Name "hydra.typescript.syntax.DoWhileStatement"++_DoWhileStatement_body = Model.Name "body"++_DoWhileStatement_test = Model.Name "test"++-- | A documentation comment (JSDoc) with structured tags+data DocumentationComment =+ DocumentationComment {+ -- | The main description+ documentationCommentDescription :: String,+ -- | Documentation tags (@param, @returns, etc.)+ documentationCommentTags :: [DocumentationTag]}+ deriving (Eq, Ord, Read, Show)++_DocumentationComment = Model.Name "hydra.typescript.syntax.DocumentationComment"++_DocumentationComment_description = Model.Name "description"++_DocumentationComment_tags = Model.Name "tags"++-- | A documentation tag (@param, @returns, @type, etc.)+data DocumentationTag =+ DocumentationTag {+ -- | Tag name (param, returns, type, etc.)+ documentationTagName :: String,+ -- | Optional type expression+ documentationTagType :: (Maybe TypeExpression),+ -- | Optional parameter name (for @param)+ documentationTagParamName :: (Maybe Identifier),+ -- | Tag description+ documentationTagDescription :: String}+ deriving (Eq, Ord, Read, Show)++_DocumentationTag = Model.Name "hydra.typescript.syntax.DocumentationTag"++_DocumentationTag_name = Model.Name "name"++_DocumentationTag_type = Model.Name "type"++_DocumentationTag_paramName = Model.Name "paramName"++_DocumentationTag_description = Model.Name "description"++-- | Export all declaration (export * from ...)+data ExportAllDeclaration =+ ExportAllDeclaration {+ exportAllDeclarationExported :: (Maybe Identifier),+ exportAllDeclarationSource :: StringLiteral}+ deriving (Eq, Ord, Read, Show)++_ExportAllDeclaration = Model.Name "hydra.typescript.syntax.ExportAllDeclaration"++_ExportAllDeclaration_exported = Model.Name "exported"++_ExportAllDeclaration_source = Model.Name "source"++-- | An export declaration+data ExportDeclaration =+ -- | Named exports (export {x, y as z})+ ExportDeclarationNamed NamedExport |+ -- | Default export (export default ...)+ ExportDeclarationDefault Expression |+ -- | Export a declaration (export const x = ...)+ ExportDeclarationDeclaration Statement |+ -- | Export all (export * from ...)+ ExportDeclarationAll ExportAllDeclaration+ deriving (Eq, Ord, Read, Show)++_ExportDeclaration = Model.Name "hydra.typescript.syntax.ExportDeclaration"++_ExportDeclaration_named = Model.Name "named"++_ExportDeclaration_default = Model.Name "default"++_ExportDeclaration_declaration = Model.Name "declaration"++_ExportDeclaration_all = Model.Name "all"++-- | An export specifier (x as y)+data ExportSpecifier =+ ExportSpecifier {+ exportSpecifierLocal :: Identifier,+ exportSpecifierExported :: Identifier}+ deriving (Eq, Ord, Read, Show)++_ExportSpecifier = Model.Name "hydra.typescript.syntax.ExportSpecifier"++_ExportSpecifier_local = Model.Name "local"++_ExportSpecifier_exported = Model.Name "exported"++-- | A TypeScript expression+data Expression =+ -- | A simple identifier+ ExpressionIdentifier Identifier |+ -- | A literal value+ ExpressionLiteral Literal |+ -- | An array expression [a, b, c]+ ExpressionArray ArrayExpression |+ -- | An object expression {a: 1, b: 2}+ ExpressionObject ObjectExpression |+ -- | A function expression+ ExpressionFunction FunctionExpression |+ -- | An arrow function expression+ ExpressionArrow ArrowFunctionExpression |+ -- | A function call expression+ ExpressionCall CallExpression |+ -- | A member access expression (obj.prop or obj[prop])+ ExpressionMember MemberExpression |+ -- | A conditional (ternary) expression+ ExpressionConditional ConditionalExpression |+ -- | A binary operation expression+ ExpressionBinary BinaryExpression |+ -- | A unary operation expression+ ExpressionUnary UnaryExpression |+ -- | An assignment expression+ ExpressionAssignment AssignmentExpression |+ -- | A sequence expression (a, b, c)+ ExpressionSequence [Expression] |+ -- | The 'this' keyword+ ExpressionThis |+ -- | A 'new' expression+ ExpressionNew CallExpression |+ -- | A yield expression+ ExpressionYield (Maybe Expression) |+ -- | An await expression+ ExpressionAwait Expression |+ -- | A spread expression (...x)+ ExpressionSpread SpreadElement |+ -- | A parenthesized expression+ ExpressionParenthesized Expression |+ -- | A TypeScript type assertion `<expr> as <type>`+ ExpressionAsExpression AsExpression+ deriving (Eq, Ord, Read, Show)++_Expression = Model.Name "hydra.typescript.syntax.Expression"++_Expression_identifier = Model.Name "identifier"++_Expression_literal = Model.Name "literal"++_Expression_array = Model.Name "array"++_Expression_object = Model.Name "object"++_Expression_function = Model.Name "function"++_Expression_arrow = Model.Name "arrow"++_Expression_call = Model.Name "call"++_Expression_member = Model.Name "member"++_Expression_conditional = Model.Name "conditional"++_Expression_binary = Model.Name "binary"++_Expression_unary = Model.Name "unary"++_Expression_assignment = Model.Name "assignment"++_Expression_sequence = Model.Name "sequence"++_Expression_this = Model.Name "this"++_Expression_new = Model.Name "new"++_Expression_yield = Model.Name "yield"++_Expression_await = Model.Name "await"++_Expression_spread = Model.Name "spread"++_Expression_parenthesized = Model.Name "parenthesized"++_Expression_asExpression = Model.Name "asExpression"++-- | Left-hand side of a for-in or for-of statement+data ForInLeft =+ ForInLeftVariable VariableDeclaration |+ ForInLeftPattern Pattern+ deriving (Eq, Ord, Read, Show)++_ForInLeft = Model.Name "hydra.typescript.syntax.ForInLeft"++_ForInLeft_variable = Model.Name "variable"++_ForInLeft_pattern = Model.Name "pattern"++-- | A for-in statement+data ForInStatement =+ ForInStatement {+ forInStatementLeft :: ForInLeft,+ forInStatementRight :: Expression,+ forInStatementBody :: Statement}+ deriving (Eq, Ord, Read, Show)++_ForInStatement = Model.Name "hydra.typescript.syntax.ForInStatement"++_ForInStatement_left = Model.Name "left"++_ForInStatement_right = Model.Name "right"++_ForInStatement_body = Model.Name "body"++-- | Initialization clause of a for statement+data ForInit =+ ForInitVariable VariableDeclaration |+ ForInitExpression Expression+ deriving (Eq, Ord, Read, Show)++_ForInit = Model.Name "hydra.typescript.syntax.ForInit"++_ForInit_variable = Model.Name "variable"++_ForInit_expression = Model.Name "expression"++-- | A for-of statement+data ForOfStatement =+ ForOfStatement {+ -- | Whether this is a for-await-of+ forOfStatementAwait :: Bool,+ forOfStatementLeft :: ForInLeft,+ forOfStatementRight :: Expression,+ forOfStatementBody :: Statement}+ deriving (Eq, Ord, Read, Show)++_ForOfStatement = Model.Name "hydra.typescript.syntax.ForOfStatement"++_ForOfStatement_await = Model.Name "await"++_ForOfStatement_left = Model.Name "left"++_ForOfStatement_right = Model.Name "right"++_ForOfStatement_body = Model.Name "body"++-- | A for statement+data ForStatement =+ ForStatement {+ -- | Initialization+ forStatementInit :: (Maybe ForInit),+ -- | Test condition+ forStatementTest :: (Maybe Expression),+ -- | Update expression+ forStatementUpdate :: (Maybe Expression),+ forStatementBody :: Statement}+ deriving (Eq, Ord, Read, Show)++_ForStatement = Model.Name "hydra.typescript.syntax.ForStatement"++_ForStatement_init = Model.Name "init"++_ForStatement_test = Model.Name "test"++_ForStatement_update = Model.Name "update"++_ForStatement_body = Model.Name "body"++-- | A function declaration+data FunctionDeclaration =+ FunctionDeclaration {+ -- | Function name+ functionDeclarationId :: Identifier,+ -- | Function parameters+ functionDeclarationParams :: [Pattern],+ -- | Function body+ functionDeclarationBody :: BlockStatement,+ -- | Whether the function is async+ functionDeclarationAsync :: Bool,+ -- | Whether the function is a generator+ functionDeclarationGenerator :: Bool}+ deriving (Eq, Ord, Read, Show)++_FunctionDeclaration = Model.Name "hydra.typescript.syntax.FunctionDeclaration"++_FunctionDeclaration_id = Model.Name "id"++_FunctionDeclaration_params = Model.Name "params"++_FunctionDeclaration_body = Model.Name "body"++_FunctionDeclaration_async = Model.Name "async"++_FunctionDeclaration_generator = Model.Name "generator"++-- | A function declaration with optional JSDoc+data FunctionDeclarationWithComments =+ FunctionDeclarationWithComments {+ -- | The function declaration+ functionDeclarationWithCommentsBody :: FunctionDeclaration,+ -- | Optional JSDoc comment+ functionDeclarationWithCommentsComments :: (Maybe DocumentationComment)}+ deriving (Eq, Ord, Read, Show)++_FunctionDeclarationWithComments = Model.Name "hydra.typescript.syntax.FunctionDeclarationWithComments"++_FunctionDeclarationWithComments_body = Model.Name "body"++_FunctionDeclarationWithComments_comments = Model.Name "comments"++-- | A function expression+data FunctionExpression =+ FunctionExpression {+ -- | Optional function name+ functionExpressionId :: (Maybe Identifier),+ -- | Function parameters+ functionExpressionParams :: [Pattern],+ -- | Function body+ functionExpressionBody :: BlockStatement,+ -- | Whether the function is async+ functionExpressionAsync :: Bool,+ -- | Whether the function is a generator+ functionExpressionGenerator :: Bool}+ deriving (Eq, Ord, Read, Show)++_FunctionExpression = Model.Name "hydra.typescript.syntax.FunctionExpression"++_FunctionExpression_id = Model.Name "id"++_FunctionExpression_params = Model.Name "params"++_FunctionExpression_body = Model.Name "body"++_FunctionExpression_async = Model.Name "async"++_FunctionExpression_generator = Model.Name "generator"++-- | A function type expression+data FunctionTypeExpression =+ FunctionTypeExpression {+ -- | Type parameters (generics)+ functionTypeExpressionTypeParameters :: [TypeParameter],+ -- | Parameter types+ functionTypeExpressionParameters :: [TypeExpression],+ -- | Return type+ functionTypeExpressionReturnType :: TypeExpression}+ deriving (Eq, Ord, Read, Show)++_FunctionTypeExpression = Model.Name "hydra.typescript.syntax.FunctionTypeExpression"++_FunctionTypeExpression_typeParameters = Model.Name "typeParameters"++_FunctionTypeExpression_parameters = Model.Name "parameters"++_FunctionTypeExpression_returnType = Model.Name "returnType"++-- | A TypeScript identifier (variable, function, class name, etc.)+newtype Identifier =+ Identifier {+ unIdentifier :: String}+ deriving (Eq, Ord, Read, Show)++_Identifier = Model.Name "hydra.typescript.syntax.Identifier"++-- | An if statement+data IfStatement =+ IfStatement {+ ifStatementTest :: Expression,+ ifStatementConsequent :: Statement,+ ifStatementAlternate :: (Maybe Statement)}+ deriving (Eq, Ord, Read, Show)++_IfStatement = Model.Name "hydra.typescript.syntax.IfStatement"++_IfStatement_test = Model.Name "test"++_IfStatement_consequent = Model.Name "consequent"++_IfStatement_alternate = Model.Name "alternate"++-- | An import clause (named, default, or namespace import)+data ImportClause =+ ImportClauseNamed ImportSpecifier |+ ImportClauseDefault ImportDefaultSpecifier |+ ImportClauseNamespace ImportNamespaceSpecifier+ deriving (Eq, Ord, Read, Show)++_ImportClause = Model.Name "hydra.typescript.syntax.ImportClause"++_ImportClause_named = Model.Name "named"++_ImportClause_default = Model.Name "default"++_ImportClause_namespace = Model.Name "namespace"++-- | An import declaration+data ImportDeclaration =+ ImportDeclaration {+ -- | What to import+ importDeclarationSpecifiers :: [ImportClause],+ -- | The module to import from+ importDeclarationSource :: StringLiteral}+ deriving (Eq, Ord, Read, Show)++_ImportDeclaration = Model.Name "hydra.typescript.syntax.ImportDeclaration"++_ImportDeclaration_specifiers = Model.Name "specifiers"++_ImportDeclaration_source = Model.Name "source"++-- | A default import specifier (import x from ...)+newtype ImportDefaultSpecifier =+ ImportDefaultSpecifier {+ unImportDefaultSpecifier :: Identifier}+ deriving (Eq, Ord, Read, Show)++_ImportDefaultSpecifier = Model.Name "hydra.typescript.syntax.ImportDefaultSpecifier"++-- | A namespace import specifier (import * as x from ...)+newtype ImportNamespaceSpecifier =+ ImportNamespaceSpecifier {+ unImportNamespaceSpecifier :: Identifier}+ deriving (Eq, Ord, Read, Show)++_ImportNamespaceSpecifier = Model.Name "hydra.typescript.syntax.ImportNamespaceSpecifier"++-- | A named import specifier (import {x as y} from ...)+data ImportSpecifier =+ ImportSpecifier {+ importSpecifierImported :: Identifier,+ importSpecifierLocal :: Identifier}+ deriving (Eq, Ord, Read, Show)++_ImportSpecifier = Model.Name "hydra.typescript.syntax.ImportSpecifier"++_ImportSpecifier_imported = Model.Name "imported"++_ImportSpecifier_local = Model.Name "local"++-- | A TypeScript interface declaration (interface Foo<T> extends Bar { ... })+data InterfaceDeclaration =+ InterfaceDeclaration {+ -- | Interface name+ interfaceDeclarationName :: Identifier,+ -- | Generic parameters+ interfaceDeclarationTypeParameters :: [TypeParameter],+ -- | Interfaces this one extends+ interfaceDeclarationExtends :: [TypeExpression],+ -- | Property signatures (the interface body)+ interfaceDeclarationMembers :: [PropertySignature]}+ deriving (Eq, Ord, Read, Show)++_InterfaceDeclaration = Model.Name "hydra.typescript.syntax.InterfaceDeclaration"++_InterfaceDeclaration_name = Model.Name "name"++_InterfaceDeclaration_typeParameters = Model.Name "typeParameters"++_InterfaceDeclaration_extends = Model.Name "extends"++_InterfaceDeclaration_members = Model.Name "members"++-- | An intersection type (A & B & C)+type IntersectionTypeExpression = [TypeExpression]++_IntersectionTypeExpression = Model.Name "hydra.typescript.syntax.IntersectionTypeExpression"++-- | A labeled statement+data LabeledStatement =+ LabeledStatement {+ labeledStatementLabel :: Identifier,+ labeledStatementBody :: Statement}+ deriving (Eq, Ord, Read, Show)++_LabeledStatement = Model.Name "hydra.typescript.syntax.LabeledStatement"++_LabeledStatement_label = Model.Name "label"++_LabeledStatement_body = Model.Name "body"++-- | A literal value+data Literal =+ -- | A string literal+ LiteralString StringLiteral |+ -- | A numeric literal+ LiteralNumber NumericLiteral |+ -- | A boolean literal (true or false)+ LiteralBoolean Bool |+ -- | The null literal+ LiteralNull |+ -- | The undefined literal+ LiteralUndefined |+ -- | A BigInt literal (e.g., 123n)+ LiteralBigInt Integer |+ -- | A template literal+ LiteralTemplate TemplateLiteral+ deriving (Eq, Ord, Read, Show)++_Literal = Model.Name "hydra.typescript.syntax.Literal"++_Literal_string = Model.Name "string"++_Literal_number = Model.Name "number"++_Literal_boolean = Model.Name "boolean"++_Literal_null = Model.Name "null"++_Literal_undefined = Model.Name "undefined"++_Literal_bigInt = Model.Name "bigInt"++_Literal_template = Model.Name "template"++-- | A member access expression+data MemberExpression =+ MemberExpression {+ -- | The object+ memberExpressionObject :: Expression,+ -- | The property+ memberExpressionProperty :: Expression,+ -- | Whether using bracket notation (obj[prop])+ memberExpressionComputed :: Bool,+ -- | Whether using optional chaining (?.)+ memberExpressionOptional :: Bool}+ deriving (Eq, Ord, Read, Show)++_MemberExpression = Model.Name "hydra.typescript.syntax.MemberExpression"++_MemberExpression_object = Model.Name "object"++_MemberExpression_property = Model.Name "property"++_MemberExpression_computed = Model.Name "computed"++_MemberExpression_optional = Model.Name "optional"++-- | A method definition in a class+data MethodDefinition =+ MethodDefinition {+ -- | Method name+ methodDefinitionKey :: Expression,+ -- | Method function+ methodDefinitionValue :: FunctionExpression,+ -- | Method kind+ methodDefinitionKind :: MethodKind,+ -- | Whether the key is computed+ methodDefinitionComputed :: Bool,+ -- | Whether the method is static+ methodDefinitionStatic :: Bool}+ deriving (Eq, Ord, Read, Show)++_MethodDefinition = Model.Name "hydra.typescript.syntax.MethodDefinition"++_MethodDefinition_key = Model.Name "key"++_MethodDefinition_value = Model.Name "value"++_MethodDefinition_kind = Model.Name "kind"++_MethodDefinition_computed = Model.Name "computed"++_MethodDefinition_static = Model.Name "static"++-- | The kind of a class method+data MethodKind =+ MethodKindConstructor |+ MethodKindMethod |+ MethodKindGet |+ MethodKindSet+ deriving (Eq, Ord, Read, Show)++_MethodKind = Model.Name "hydra.typescript.syntax.MethodKind"++_MethodKind_constructor = Model.Name "constructor"++_MethodKind_method = Model.Name "method"++_MethodKind_get = Model.Name "get"++_MethodKind_set = Model.Name "set"++-- | A top-level item in a module+data ModuleItem =+ ModuleItemStatement Statement |+ ModuleItemImport ImportDeclaration |+ ModuleItemExport ExportDeclaration |+ -- | A top-level interface declaration+ ModuleItemInterface InterfaceDeclaration |+ -- | A top-level type alias declaration+ ModuleItemTypeAlias TypeAliasDeclaration+ deriving (Eq, Ord, Read, Show)++_ModuleItem = Model.Name "hydra.typescript.syntax.ModuleItem"++_ModuleItem_statement = Model.Name "statement"++_ModuleItem_import = Model.Name "import"++_ModuleItem_export = Model.Name "export"++_ModuleItem_interface = Model.Name "interface"++_ModuleItem_typeAlias = Model.Name "typeAlias"++-- | A module item with optional documentation+data ModuleItemWithComments =+ ModuleItemWithComments {+ -- | The module item+ moduleItemWithCommentsBody :: ModuleItem,+ -- | Optional documentation comment+ moduleItemWithCommentsComments :: (Maybe DocumentationComment)}+ deriving (Eq, Ord, Read, Show)++_ModuleItemWithComments = Model.Name "hydra.typescript.syntax.ModuleItemWithComments"++_ModuleItemWithComments_body = Model.Name "body"++_ModuleItemWithComments_comments = Model.Name "comments"++-- | Named exports (export {x, y as z})+data NamedExport =+ NamedExport {+ namedExportSpecifiers :: [ExportSpecifier],+ namedExportSource :: (Maybe StringLiteral)}+ deriving (Eq, Ord, Read, Show)++_NamedExport = Model.Name "hydra.typescript.syntax.NamedExport"++_NamedExport_specifiers = Model.Name "specifiers"++_NamedExport_source = Model.Name "source"++-- | A numeric literal (integer or floating-point)+data NumericLiteral =+ -- | An integer literal+ NumericLiteralInteger I.Int64 |+ -- | A floating-point literal+ NumericLiteralFloat Double+ deriving (Eq, Ord, Read, Show)++_NumericLiteral = Model.Name "hydra.typescript.syntax.NumericLiteral"++_NumericLiteral_integer = Model.Name "integer"++_NumericLiteral_float = Model.Name "float"++-- | An object expression {a: 1, b: 2}+type ObjectExpression = [Property]++_ObjectExpression = Model.Name "hydra.typescript.syntax.ObjectExpression"++-- | An object destructuring pattern {a, b: c}+data ObjectPattern =+ ObjectPattern {+ -- | The property patterns+ objectPatternProperties :: [ObjectPatternProperty]}+ deriving (Eq, Ord, Read, Show)++_ObjectPattern = Model.Name "hydra.typescript.syntax.ObjectPattern"++_ObjectPattern_properties = Model.Name "properties"++-- | A property in an object pattern+data ObjectPatternProperty =+ ObjectPatternPropertyProperty Property |+ ObjectPatternPropertyRest RestElement+ deriving (Eq, Ord, Read, Show)++_ObjectPatternProperty = Model.Name "hydra.typescript.syntax.ObjectPatternProperty"++_ObjectPatternProperty_property = Model.Name "property"++_ObjectPatternProperty_rest = Model.Name "rest"++-- | An object type with property signatures+type ObjectTypeExpression = [PropertySignature]++_ObjectTypeExpression = Model.Name "hydra.typescript.syntax.ObjectTypeExpression"++-- | A parameterized type (e.g., Array<T>, Map<K, V>)+data ParameterizedTypeExpression =+ ParameterizedTypeExpression {+ parameterizedTypeExpressionBase :: TypeExpression,+ parameterizedTypeExpressionArguments :: [TypeExpression]}+ deriving (Eq, Ord, Read, Show)++_ParameterizedTypeExpression = Model.Name "hydra.typescript.syntax.ParameterizedTypeExpression"++_ParameterizedTypeExpression_base = Model.Name "base"++_ParameterizedTypeExpression_arguments = Model.Name "arguments"++-- | A binding pattern (for destructuring)+data Pattern =+ -- | A simple identifier binding+ PatternIdentifier Identifier |+ -- | An object destructuring pattern+ PatternObject ObjectPattern |+ -- | An array destructuring pattern+ PatternArray ArrayPattern |+ -- | A pattern with default value+ PatternAssignment AssignmentPattern |+ -- | A rest element (...x)+ PatternRest RestElement |+ -- | A pattern with a TypeScript type annotation (`x: T`)+ PatternTyped TypedPattern+ deriving (Eq, Ord, Read, Show)++_Pattern = Model.Name "hydra.typescript.syntax.Pattern"++_Pattern_identifier = Model.Name "identifier"++_Pattern_object = Model.Name "object"++_Pattern_array = Model.Name "array"++_Pattern_assignment = Model.Name "assignment"++_Pattern_rest = Model.Name "rest"++_Pattern_typed = Model.Name "typed"++-- | A TypeScript program (module)+data Program =+ Program {+ -- | The module items+ programBody :: [ModuleItem],+ -- | Whether this is a module or script+ programSourceType :: SourceType}+ deriving (Eq, Ord, Read, Show)++_Program = Model.Name "hydra.typescript.syntax.Program"++_Program_body = Model.Name "body"++_Program_sourceType = Model.Name "sourceType"++-- | A property in an object expression+data Property =+ Property {+ -- | Property key (identifier, literal, or computed)+ propertyKey :: Expression,+ -- | Property value+ propertyValue :: Expression,+ -- | Property kind (init, get, set)+ propertyKind :: PropertyKind,+ -- | Whether the key is computed [expr]+ propertyComputed :: Bool,+ -- | Whether using shorthand syntax {x} for {x: x}+ propertyShorthand :: Bool}+ deriving (Eq, Ord, Read, Show)++_Property = Model.Name "hydra.typescript.syntax.Property"++_Property_key = Model.Name "key"++_Property_value = Model.Name "value"++_Property_kind = Model.Name "kind"++_Property_computed = Model.Name "computed"++_Property_shorthand = Model.Name "shorthand"++-- | The kind of an object property+data PropertyKind =+ -- | A normal property initialization+ PropertyKindInit |+ -- | A getter+ PropertyKindGet |+ -- | A setter+ PropertyKindSet+ deriving (Eq, Ord, Read, Show)++_PropertyKind = Model.Name "hydra.typescript.syntax.PropertyKind"++_PropertyKind_init = Model.Name "init"++_PropertyKind_get = Model.Name "get"++_PropertyKind_set = Model.Name "set"++-- | A property signature in an object type+data PropertySignature =+ PropertySignature {+ -- | Property name+ propertySignatureName :: Identifier,+ -- | Property type+ propertySignatureType :: TypeExpression,+ -- | Whether the property is optional+ propertySignatureOptional :: Bool,+ -- | Whether the property is readonly+ propertySignatureReadonly :: Bool,+ -- | Optional JSDoc documentation comment to emit above this property+ propertySignatureComments :: (Maybe DocumentationComment)}+ deriving (Eq, Ord, Read, Show)++_PropertySignature = Model.Name "hydra.typescript.syntax.PropertySignature"++_PropertySignature_name = Model.Name "name"++_PropertySignature_type = Model.Name "type"++_PropertySignature_optional = Model.Name "optional"++_PropertySignature_readonly = Model.Name "readonly"++_PropertySignature_comments = Model.Name "comments"++-- | A qualified name like 'module.submodule.name'+type QualifiedName = [Identifier]++_QualifiedName = Model.Name "hydra.typescript.syntax.QualifiedName"++-- | A rest element pattern (...x)+newtype RestElement =+ RestElement {+ unRestElement :: Pattern}+ deriving (Eq, Ord, Read, Show)++_RestElement = Model.Name "hydra.typescript.syntax.RestElement"++-- | A return statement+type ReturnStatement = (Maybe Expression)++_ReturnStatement = Model.Name "hydra.typescript.syntax.ReturnStatement"++-- | Whether the program is a module or script+data SourceType =+ SourceTypeModule |+ SourceTypeScript+ deriving (Eq, Ord, Read, Show)++_SourceType = Model.Name "hydra.typescript.syntax.SourceType"++_SourceType_module = Model.Name "module"++_SourceType_script = Model.Name "script"++-- | A spread element (...x)+newtype SpreadElement =+ SpreadElement {+ unSpreadElement :: Expression}+ deriving (Eq, Ord, Read, Show)++_SpreadElement = Model.Name "hydra.typescript.syntax.SpreadElement"++-- | A TypeScript statement+data Statement =+ -- | An expression statement+ StatementExpression Expression |+ -- | A block statement+ StatementBlock BlockStatement |+ -- | An empty statement (;)+ StatementEmpty |+ -- | A debugger statement+ StatementDebugger |+ -- | A return statement+ StatementReturn ReturnStatement |+ -- | A break statement+ StatementBreak BreakStatement |+ -- | A continue statement+ StatementContinue ContinueStatement |+ -- | An if statement+ StatementIf IfStatement |+ -- | A switch statement+ StatementSwitch SwitchStatement |+ -- | A throw statement+ StatementThrow ThrowStatement |+ -- | A try statement+ StatementTry TryStatement |+ -- | A while statement+ StatementWhile WhileStatement |+ -- | A do-while statement+ StatementDoWhile DoWhileStatement |+ -- | A for statement+ StatementFor ForStatement |+ -- | A for-in statement+ StatementForIn ForInStatement |+ -- | A for-of statement+ StatementForOf ForOfStatement |+ -- | A variable declaration+ StatementVariableDeclaration VariableDeclaration |+ -- | A function declaration+ StatementFunctionDeclaration FunctionDeclaration |+ -- | A class declaration+ StatementClassDeclaration ClassDeclaration |+ -- | A labeled statement+ StatementLabeled LabeledStatement+ deriving (Eq, Ord, Read, Show)++_Statement = Model.Name "hydra.typescript.syntax.Statement"++_Statement_expression = Model.Name "expression"++_Statement_block = Model.Name "block"++_Statement_empty = Model.Name "empty"++_Statement_debugger = Model.Name "debugger"++_Statement_return = Model.Name "return"++_Statement_break = Model.Name "break"++_Statement_continue = Model.Name "continue"++_Statement_if = Model.Name "if"++_Statement_switch = Model.Name "switch"++_Statement_throw = Model.Name "throw"++_Statement_try = Model.Name "try"++_Statement_while = Model.Name "while"++_Statement_doWhile = Model.Name "doWhile"++_Statement_for = Model.Name "for"++_Statement_forIn = Model.Name "forIn"++_Statement_forOf = Model.Name "forOf"++_Statement_variableDeclaration = Model.Name "variableDeclaration"++_Statement_functionDeclaration = Model.Name "functionDeclaration"++_Statement_classDeclaration = Model.Name "classDeclaration"++_Statement_labeled = Model.Name "labeled"++-- | A statement with optional documentation+data StatementWithComments =+ StatementWithComments {+ -- | The statement+ statementWithCommentsBody :: Statement,+ -- | Optional documentation comment+ statementWithCommentsComments :: (Maybe DocumentationComment)}+ deriving (Eq, Ord, Read, Show)++_StatementWithComments = Model.Name "hydra.typescript.syntax.StatementWithComments"++_StatementWithComments_body = Model.Name "body"++_StatementWithComments_comments = Model.Name "comments"++-- | A string literal with quote style+data StringLiteral =+ StringLiteral {+ -- | The string value+ stringLiteralValue :: String,+ -- | Whether to use single quotes (true) or double quotes (false)+ stringLiteralSingleQuote :: Bool}+ deriving (Eq, Ord, Read, Show)++_StringLiteral = Model.Name "hydra.typescript.syntax.StringLiteral"++_StringLiteral_value = Model.Name "value"++_StringLiteral_singleQuote = Model.Name "singleQuote"++-- | A case clause in a switch statement+data SwitchCase =+ SwitchCase {+ -- | The test expression (Nothing for default)+ switchCaseTest :: (Maybe Expression),+ -- | The statements to execute+ switchCaseConsequent :: [Statement]}+ deriving (Eq, Ord, Read, Show)++_SwitchCase = Model.Name "hydra.typescript.syntax.SwitchCase"++_SwitchCase_test = Model.Name "test"++_SwitchCase_consequent = Model.Name "consequent"++-- | A switch statement+data SwitchStatement =+ SwitchStatement {+ switchStatementDiscriminant :: Expression,+ switchStatementCases :: [SwitchCase]}+ deriving (Eq, Ord, Read, Show)++_SwitchStatement = Model.Name "hydra.typescript.syntax.SwitchStatement"++_SwitchStatement_discriminant = Model.Name "discriminant"++_SwitchStatement_cases = Model.Name "cases"++-- | A static part of a template literal+data TemplateElement =+ TemplateElement {+ -- | The raw string value+ templateElementValue :: String,+ -- | Whether this is the last element+ templateElementTail :: Bool}+ deriving (Eq, Ord, Read, Show)++_TemplateElement = Model.Name "hydra.typescript.syntax.TemplateElement"++_TemplateElement_value = Model.Name "value"++_TemplateElement_tail = Model.Name "tail"++-- | A template literal (backtick string with interpolations)+data TemplateLiteral =+ TemplateLiteral {+ -- | The static string parts+ templateLiteralQuasis :: [TemplateElement],+ -- | The interpolated expressions+ templateLiteralExpressions :: [Expression]}+ deriving (Eq, Ord, Read, Show)++_TemplateLiteral = Model.Name "hydra.typescript.syntax.TemplateLiteral"++_TemplateLiteral_quasis = Model.Name "quasis"++_TemplateLiteral_expressions = Model.Name "expressions"++-- | A throw statement+newtype ThrowStatement =+ ThrowStatement {+ unThrowStatement :: Expression}+ deriving (Eq, Ord, Read, Show)++_ThrowStatement = Model.Name "hydra.typescript.syntax.ThrowStatement"++-- | A try statement+data TryStatement =+ TryStatement {+ tryStatementBlock :: BlockStatement,+ tryStatementHandler :: (Maybe CatchClause),+ tryStatementFinalizer :: (Maybe BlockStatement)}+ deriving (Eq, Ord, Read, Show)++_TryStatement = Model.Name "hydra.typescript.syntax.TryStatement"++_TryStatement_block = Model.Name "block"++_TryStatement_handler = Model.Name "handler"++_TryStatement_finalizer = Model.Name "finalizer"++-- | A tuple type ([A, B] or readonly [A, B])+type TupleTypeExpression = [TypeExpression]++_TupleTypeExpression = Model.Name "hydra.typescript.syntax.TupleTypeExpression"++-- | A TypeScript type alias declaration (type Foo<T> = ...)+data TypeAliasDeclaration =+ TypeAliasDeclaration {+ -- | Alias name+ typeAliasDeclarationName :: Identifier,+ -- | Generic parameters+ typeAliasDeclarationTypeParameters :: [TypeParameter],+ -- | The right-hand-side type+ typeAliasDeclarationType :: TypeExpression}+ deriving (Eq, Ord, Read, Show)++_TypeAliasDeclaration = Model.Name "hydra.typescript.syntax.TypeAliasDeclaration"++_TypeAliasDeclaration_name = Model.Name "name"++_TypeAliasDeclaration_typeParameters = Model.Name "typeParameters"++_TypeAliasDeclaration_type = Model.Name "type"++-- | A type annotation (for JSDoc comments or TypeScript)+newtype TypeAnnotation =+ TypeAnnotation {+ unTypeAnnotation :: TypeExpression}+ deriving (Eq, Ord, Read, Show)++_TypeAnnotation = Model.Name "hydra.typescript.syntax.TypeAnnotation"++-- | A type expression+data TypeExpression =+ -- | A named type (e.g., 'string', 'number', 'MyClass')+ TypeExpressionIdentifier Identifier |+ -- | A literal type (e.g., 'hello', 42)+ TypeExpressionLiteral Literal |+ -- | An array type+ TypeExpressionArray ArrayTypeExpression |+ -- | A function type+ TypeExpressionFunction FunctionTypeExpression |+ -- | An object type+ TypeExpressionObject ObjectTypeExpression |+ -- | A tuple type (readonly [A, B, C])+ TypeExpressionTuple TupleTypeExpression |+ -- | A union type (A | B)+ TypeExpressionUnion UnionTypeExpression |+ -- | An intersection type (A & B)+ TypeExpressionIntersection IntersectionTypeExpression |+ -- | A parameterized type (e.g., Array<T>, Map<K, V>)+ TypeExpressionParameterized ParameterizedTypeExpression |+ -- | An optional type (T | undefined or T?)+ TypeExpressionOptional TypeExpression |+ -- | A readonly modifier (readonly T[], readonly [A, B])+ TypeExpressionReadonly TypeExpression |+ -- | The 'any' type+ TypeExpressionAny |+ -- | The 'unknown' type+ TypeExpressionUnknown |+ -- | The 'void' type+ TypeExpressionVoid |+ -- | The 'never' type+ TypeExpressionNever+ deriving (Eq, Ord, Read, Show)++_TypeExpression = Model.Name "hydra.typescript.syntax.TypeExpression"++_TypeExpression_identifier = Model.Name "identifier"++_TypeExpression_literal = Model.Name "literal"++_TypeExpression_array = Model.Name "array"++_TypeExpression_function = Model.Name "function"++_TypeExpression_object = Model.Name "object"++_TypeExpression_tuple = Model.Name "tuple"++_TypeExpression_union = Model.Name "union"++_TypeExpression_intersection = Model.Name "intersection"++_TypeExpression_parameterized = Model.Name "parameterized"++_TypeExpression_optional = Model.Name "optional"++_TypeExpression_readonly = Model.Name "readonly"++_TypeExpression_any = Model.Name "any"++_TypeExpression_unknown = Model.Name "unknown"++_TypeExpression_void = Model.Name "void"++_TypeExpression_never = Model.Name "never"++-- | A type parameter (generic)+data TypeParameter =+ TypeParameter {+ -- | Parameter name+ typeParameterName :: Identifier,+ -- | Optional constraint (extends clause)+ typeParameterConstraint :: (Maybe TypeExpression),+ -- | Optional default type+ typeParameterDefault :: (Maybe TypeExpression)}+ deriving (Eq, Ord, Read, Show)++_TypeParameter = Model.Name "hydra.typescript.syntax.TypeParameter"++_TypeParameter_name = Model.Name "name"++_TypeParameter_constraint = Model.Name "constraint"++_TypeParameter_default = Model.Name "default"++-- | A pattern with a TypeScript type annotation (`x: T`)+data TypedPattern =+ TypedPattern {+ -- | The underlying binding pattern+ typedPatternPattern :: Pattern,+ -- | The TypeScript type annotation+ typedPatternType :: TypeExpression}+ deriving (Eq, Ord, Read, Show)++_TypedPattern = Model.Name "hydra.typescript.syntax.TypedPattern"++_TypedPattern_pattern = Model.Name "pattern"++_TypedPattern_type = Model.Name "type"++-- | A unary operation expression+data UnaryExpression =+ UnaryExpression {+ unaryExpressionOperator :: UnaryOperator,+ unaryExpressionArgument :: Expression,+ -- | Whether the operator is prefix (true) or postfix (false)+ unaryExpressionPrefix :: Bool}+ deriving (Eq, Ord, Read, Show)++_UnaryExpression = Model.Name "hydra.typescript.syntax.UnaryExpression"++_UnaryExpression_operator = Model.Name "operator"++_UnaryExpression_argument = Model.Name "argument"++_UnaryExpression_prefix = Model.Name "prefix"++-- | A unary operator+data UnaryOperator =+ -- | -+ UnaryOperatorNegate |+ -- | ++ UnaryOperatorPlus |+ -- | !+ UnaryOperatorNot |+ -- | ~+ UnaryOperatorBitwiseNot |+ -- | typeof+ UnaryOperatorTypeof |+ -- | void+ UnaryOperatorVoid |+ -- | delete+ UnaryOperatorDelete |+ -- | +++ UnaryOperatorIncrement |+ -- | --+ UnaryOperatorDecrement+ deriving (Eq, Ord, Read, Show)++_UnaryOperator = Model.Name "hydra.typescript.syntax.UnaryOperator"++_UnaryOperator_negate = Model.Name "negate"++_UnaryOperator_plus = Model.Name "plus"++_UnaryOperator_not = Model.Name "not"++_UnaryOperator_bitwiseNot = Model.Name "bitwiseNot"++_UnaryOperator_typeof = Model.Name "typeof"++_UnaryOperator_void = Model.Name "void"++_UnaryOperator_delete = Model.Name "delete"++_UnaryOperator_increment = Model.Name "increment"++_UnaryOperator_decrement = Model.Name "decrement"++-- | A union type (A | B | C)+type UnionTypeExpression = [TypeExpression]++_UnionTypeExpression = Model.Name "hydra.typescript.syntax.UnionTypeExpression"++-- | A variable declaration (var, let, const)+data VariableDeclaration =+ VariableDeclaration {+ variableDeclarationKind :: VariableKind,+ variableDeclarationDeclarations :: [VariableDeclarator]}+ deriving (Eq, Ord, Read, Show)++_VariableDeclaration = Model.Name "hydra.typescript.syntax.VariableDeclaration"++_VariableDeclaration_kind = Model.Name "kind"++_VariableDeclaration_declarations = Model.Name "declarations"++-- | A variable declarator (id = init)+data VariableDeclarator =+ VariableDeclarator {+ variableDeclaratorId :: Pattern,+ variableDeclaratorInit :: (Maybe Expression)}+ deriving (Eq, Ord, Read, Show)++_VariableDeclarator = Model.Name "hydra.typescript.syntax.VariableDeclarator"++_VariableDeclarator_id = Model.Name "id"++_VariableDeclarator_init = Model.Name "init"++-- | The kind of variable declaration+data VariableKind =+ VariableKindVar |+ VariableKindLet |+ VariableKindConst+ deriving (Eq, Ord, Read, Show)++_VariableKind = Model.Name "hydra.typescript.syntax.VariableKind"++_VariableKind_var = Model.Name "var"++_VariableKind_let = Model.Name "let"++_VariableKind_const = Model.Name "const"++-- | A while statement+data WhileStatement =+ WhileStatement {+ whileStatementTest :: Expression,+ whileStatementBody :: Statement}+ deriving (Eq, Ord, Read, Show)++_WhileStatement = Model.Name "hydra.typescript.syntax.WhileStatement"++_WhileStatement_test = Model.Name "test"++_WhileStatement_body = Model.Name "body"