1/* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import * as arkts from '@koalaui/libarkts'; 17import { PluginContext, Plugins } from '../../../common/plugin-context'; 18import { ProgramVisitor } from '../../../common/program-visitor'; 19import { EXTERNAL_SOURCE_PREFIX_NAMES } from '../../../common/predefines'; 20import { CheckedTransformer } from '../../../ui-plugins/checked-transformer'; 21 22/** 23 * AfterCheck uiTransform with no recheck AST. 24 */ 25export const uiNoRecheck: Plugins = { 26 name: 'ui-no-recheck', 27 checked(this: PluginContext): arkts.EtsScript | undefined { 28 let script: arkts.EtsScript | undefined; 29 const contextPtr = arkts.arktsGlobal.compilerContext?.peer ?? this.getContextPtr(); 30 if (!!contextPtr) { 31 let program = arkts.getOrUpdateGlobalContext(contextPtr).program; 32 script = program.astNode; 33 const checkedTransformer = new CheckedTransformer(this.getProjectConfig()); 34 const programVisitor = new ProgramVisitor({ 35 pluginName: uiNoRecheck.name, 36 state: arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED, 37 visitors: [checkedTransformer], 38 skipPrefixNames: EXTERNAL_SOURCE_PREFIX_NAMES, 39 pluginContext: this, 40 }); 41 program = programVisitor.programVisitor(program); 42 script = program.astNode; 43 arkts.GlobalInfo.getInfoInstance().reset(); 44 return script; 45 } 46 return script; 47 }, 48}; 49