UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

144 lines 14.3 kB
import { babelTypes, naslTypes, ParseNaturalTSState } from './utils'; export interface LogicTransformOptions { transformType: 'logic'; logicType: 'global_logic' | 'view_logic' | 'event_logic'; logic: naslTypes.Logic; /** * 是否是默认值或属性中的受限表达式 * * 受限表达式不支持函数调用 */ isRestricted?: boolean; /** * 在前端不能使用数据查询组件 */ isInFrontend?: boolean; entityAsNames?: Array<string>; typeAnnotation?: naslTypes.TypeAnnotation; logicNames?: Array<string>; transformNodeFunction?: typeof transform2LogicItem; inOqlIdentifierNamespace?: string; inCallQueryComponentField?: CallQueryComponentChainNode['calleeName']; needThrowError?: boolean; parsingId?: number; } export interface AttrTransformOptions { transformType: 'attr'; /** * 是否是默认值或属性中的受限表达式 * * 受限表达式不支持函数调用 */ isRestricted?: boolean; /** * 在前端不能使用数据查询组件 */ isInFrontend?: boolean; typeAnnotation?: naslTypes.TypeAnnotation; transformNodeFunction?: typeof transform2LogicItem; needThrowError?: boolean; parsingId?: number; } export type TransformOptions = (LogicTransformOptions | AttrTransformOptions) & ParseNaturalTSState; export type TransformPair<B extends babelTypes.Node, N extends naslTypes.LogicItemNode> = [ B['type'] | ((node: B) => boolean), (node: B, options: TransformOptions) => N | void ]; export type TransformCallExpressionPair = [ string | ((node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[]) => boolean), (node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions) => naslTypes.LogicItemNode | void ]; export declare class TransformManager { private transforms; private transformCallExpressions; register<B extends babelTypes.Node, N extends naslTypes.LogicItemNode>(type: TransformPair<B, N>[0], transform: TransformPair<B, N>[1]): void; registerCallExpression(type: TransformCallExpressionPair[0], transform: TransformCallExpressionPair[1]): void; apply(node: babelTypes.Node, options: TransformOptions): void | naslTypes.SubLogic | naslTypes.AnonymousFunction | naslTypes.Abort | naslTypes.Start | naslTypes.End | naslTypes.IfStatement | naslTypes.SwitchStatement | naslTypes.SwitchCase | naslTypes.ForEachStatement | naslTypes.WhileStatement | naslTypes.Break | naslTypes.Continue | naslTypes.Assignment | naslTypes.BatchAssignment | naslTypes.Comment | naslTypes.CallLogic | naslTypes.CallEvent | naslTypes.CallFunction | naslTypes.CallInterface | naslTypes.Destination | naslTypes.ExternalDestination | naslTypes.ValidationRule | naslTypes.ValidationLogic | naslTypes.Argument | naslTypes.Anchor | naslTypes.JSBlock | naslTypes.JavaLogic | naslTypes.Block | naslTypes.Identifier | naslTypes.NullLiteral | naslTypes.BooleanLiteral | naslTypes.StringLiteral | naslTypes.StringInterpolation | naslTypes.NumericLiteral | naslTypes.BinaryExpression | naslTypes.VariadicExpression | naslTypes.MatchCase | naslTypes.Match | naslTypes.UnaryExpression | naslTypes.MemberExpression | naslTypes.Unparsed | naslTypes.New | naslTypes.NewComposite | naslTypes.NewStructure | naslTypes.NewList | naslTypes.NewMap | naslTypes.NewRegex | naslTypes.Paginate | naslTypes.CallQueryComponent | naslTypes.QuerySelectExpression | naslTypes.QueryFromExpression | naslTypes.QueryJoinExpression | naslTypes.QueryFieldExpression | naslTypes.QueryAggregateExpression | naslTypes.QueryOrderByExpression | naslTypes.QueryGroupByExpression | naslTypes.QueryLimitExpression | naslTypes.SqlQueryComponent | naslTypes.OqlQueryComponent | naslTypes.ProcessOutcome | naslTypes.Assignee | naslTypes.ProcessOutcomes; } export declare function fixExpression(arg: any, options: TransformOptions, supportSubLogic?: boolean): any; /** * 铺平点选表达式 */ export declare function flatMemberExpression(node: babelTypes.Node): Array<babelTypes.Node>; /** * 将铺平的点选表达式列表转换回 MemberExpression */ export declare function unflatMemberExpression(nodes: Array<babelTypes.Identifier>, options: TransformOptions, memberExpression?: naslTypes.MemberExpression, namespace?: string): naslTypes.MemberExpression; export declare function getSelectMembers(node: naslTypes.LogicItemNode): Array<naslTypes.MemberExpression>; export declare function flatMatchPatternsExpression(node: any): Array<babelTypes.Node>; export declare function flatIfStatementForMatch(node: babelTypes.IfStatement): Array<babelTypes.Node>; /** * 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分 * @param node * @returns */ export declare function fixLogicNode(node: babelTypes.Node): void; export declare function transform2Param(node: babelTypes.Identifier | babelTypes.AssignmentPattern | babelTypes.ObjectProperty | babelTypes.TSPropertySignature, options: TransformOptions): naslTypes.Param | void; export declare function transformCallExpressionToBinaryExpression(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.BinaryExpression | naslTypes.UnaryExpression; export declare function transform2VariadicExpression(node: babelTypes.LogicalExpression, options: TransformOptions): naslTypes.VariadicExpression; export declare function transform2BinaryExpression(node: babelTypes.BinaryExpression | babelTypes.LogicalExpression, options: TransformOptions): naslTypes.BinaryExpression | naslTypes.VariadicExpression | naslTypes.UnaryExpression | naslTypes.Match | void; export declare function transform2IfStatement(node: babelTypes.IfStatement, options: TransformOptions): naslTypes.SwitchStatement | naslTypes.IfStatement; export declare function transform2Continue(): naslTypes.Continue; export declare function transform2Break(): naslTypes.Break; export declare function transform2WhileStatement(node: babelTypes.WhileStatement, options: TransformOptions): naslTypes.WhileStatement; export declare function transformSwitchStatement2Match(node: babelTypes.SwitchStatement, options: TransformOptions): naslTypes.Match; export declare function transformIdentifier(node: babelTypes.Identifier, options: TransformOptions): naslTypes.QueryFieldExpression | naslTypes.MemberExpression | naslTypes.Identifier | naslTypes.NullLiteral; export declare function transform2AnonymousFunction(node: babelTypes.ArrowFunctionExpression, options: TransformOptions): naslTypes.AnonymousFunction | void; export declare function transform2Assignment(node: babelTypes.AssignmentExpression, options: TransformOptions): naslTypes.Assignment | naslTypes.BinaryExpression; export declare function transformUpdateExpression2Assignment(node: babelTypes.UpdateExpression, options: TransformOptions): naslTypes.Assignment; export declare function transform2BooleanLiteral(node: babelTypes.BooleanLiteral, options: TransformOptions): naslTypes.BooleanLiteral; export declare function transform2StringLiteral(node: babelTypes.StringLiteral, options: TransformOptions): naslTypes.StringLiteral; export declare function transform2DirectiveLiteral(node: babelTypes.Directive, options: TransformOptions): naslTypes.StringLiteral; export declare function transform2NumericLiteral(node: babelTypes.NumericLiteral, options: TransformOptions): naslTypes.NumericLiteral; export declare function transform2NullLiteral(node: babelTypes.NullLiteral, options: TransformOptions): naslTypes.NullLiteral; export declare function transformReturnStatement2AssignmentOrEnd(node: babelTypes.ReturnStatement, options: TransformOptions): naslTypes.Assignment | naslTypes.End; export declare function transform2StringInterpolation(node: babelTypes.TemplateLiteral, options: TransformOptions): naslTypes.StringInterpolation; export declare function transform2Comment(node: any, options: TransformOptions): naslTypes.Comment; export declare function transform2PartialNewComposite(node: babelTypes.ObjectExpression, options: TransformOptions): naslTypes.NewComposite; export declare function transform2NewRegex(node: babelTypes.NewExpression | babelTypes.RegExpLiteral, options: TransformOptions): naslTypes.NewRegex; export declare function transformNewExpression(node: babelTypes.NewExpression, options: TransformOptions): naslTypes.LogicItemNode; export declare function transformMemberExpression(node: babelTypes.MemberExpression | babelTypes.OptionalMemberExpression, options: TransformOptions): naslTypes.CallFunction | naslTypes.QueryFieldExpression | naslTypes.MemberExpression | naslTypes.Identifier | void; /** * @example (function match(_value) { if (_value === true) { return 'green' } else { return 'red' } })(nasl.util.Convert<Boolean>(enabled)) */ export declare function transformCallFunctionExpression2Match(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.Match | void; export declare function transformCall2CallViewElementLogic(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.MemberExpression | naslTypes.Assignment | naslTypes.CallLogic | void; export declare function transformCall2CallEntityLogic(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2CallDataSourceLogic(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2ConsoleLog(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2Logging(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2JSONFunctions(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic; export declare function transform2CallEventLogic(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic; export declare function transform2CallOtherNASLLogic(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic; export declare function transform2CallFunction(node: babelTypes.CallExpression, calleeName: string, argument: babelTypes.Node[], options: TransformOptions): naslTypes.CallFunction | naslTypes.MemberExpression | void; export declare function transformCall2CallFunction(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.BinaryExpression | naslTypes.NewList | naslTypes.NewMap | naslTypes.NewComposite | naslTypes.CallFunction | naslTypes.MemberExpression | void; export declare function transform2UIFunction(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.Destination | naslTypes.CallLogic | naslTypes.ExternalDestination | void; export declare function transformMap2ListTransform(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallFunction; export declare function transform2ForEachStatement(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.ForEachStatement; export declare function transformForOf2ForEachStatement(node: babelTypes.ForOfStatement, options: TransformOptions): naslTypes.ForEachStatement; export declare function transformForEach2ForEachStatement(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.ForEachStatement; export declare function transformAlert2ShowMessage(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2Interface(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallInterface | void; export declare function transformCall2Connector(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallConnector | void; export declare function transformCall2Extension(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2CallViewLogic(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2Logic(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | naslTypes.CallFunction | naslTypes.CallFunction | naslTypes.MemberExpression | void; export declare function transformCall2LogicWithAuth(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.CallLogic | void; export declare function transformCall2Paginate(node: babelTypes.CallExpression, calleeName: string, callee: babelTypes.Node[], options: TransformOptions): naslTypes.Paginate; type CallQueryComponentChainNode = { calleeName: 'FROM' | 'INNER_JOIN' | 'LEFT_JOIN' | 'RIGHT_JOIN' | 'OUTER_JOIN'; arguments: [babelTypes.MemberExpression, babelTypes.Identifier, babelTypes.BinaryExpression | babelTypes.LogicalExpression]; } | { calleeName: 'WHERE' | 'HAVING' | 'GROUP_BY' | 'ORDER_BY' | 'SELECT' | 'AGGR_SELECT'; arguments: Array<babelTypes.Expression>; }; export declare function transformNode2Directory(node: babelTypes.ObjectProperty): naslTypes.Directory; export declare function transform2LogicItem(node: babelTypes.Node, options: TransformOptions): naslTypes.LogicItemNode | undefined; export {}; //# sourceMappingURL=transform2LogicItem.d.ts.map