From cdaeb012771cdeeb2b91249e380fac7c9db9c3a1 Mon Sep 17 00:00:00 2001 From: naumovdmitrii Date: Tue, 13 Aug 2024 17:50:40 +0300 Subject: [PATCH] Revert "!1072 Ets plugin refactoring: arkts arkui implementation" This reverts commit 0f63f9774a9389014118ddc6c067f36fb1deb86e. --- arkoala/ets-plugin/src/AbilityTransformer.ts | 2 +- arkoala/ets-plugin/src/CallTransformer.ts | 2 +- .../src/ExtensionStylesTransformer.ts | 26 +- arkoala/ets-plugin/src/Importer.ts | 246 ++++++++---------- arkoala/ets-plugin/src/LazyTransformer.ts | 2 +- arkoala/ets-plugin/src/utils.ts | 13 +- 6 files changed, 118 insertions(+), 173 deletions(-) diff --git a/arkoala/ets-plugin/src/AbilityTransformer.ts b/arkoala/ets-plugin/src/AbilityTransformer.ts index 2a55450e1..1de750f5d 100644 --- a/arkoala/ets-plugin/src/AbilityTransformer.ts +++ b/arkoala/ets-plugin/src/AbilityTransformer.ts @@ -78,7 +78,7 @@ export class AbilityTransformer extends AbstractVisitor { } visitor(node: ts.Node): ts.Node { - if (!this.importer.isArkoala()) return node + if (!this.importer.__isArkoalaImplementation) return node if (ts.isSourceFile(node) && !this.containsArkoalaAbility(node)) { return this.rewriteSourceFile(node) diff --git a/arkoala/ets-plugin/src/CallTransformer.ts b/arkoala/ets-plugin/src/CallTransformer.ts index cd0747d84..e8515afcb 100644 --- a/arkoala/ets-plugin/src/CallTransformer.ts +++ b/arkoala/ets-plugin/src/CallTransformer.ts @@ -66,7 +66,7 @@ export class CallTransformer extends AbstractVisitor { } isLegacyCall(node: ts.Identifier): boolean { - if (!this.importer.isArkoala()) return false + if (!this.importer.__isArkoalaImplementation) return false const moduleSpecifier = this.getImportModuileSpecifier(node) if (!moduleSpecifier) return false diff --git a/arkoala/ets-plugin/src/ExtensionStylesTransformer.ts b/arkoala/ets-plugin/src/ExtensionStylesTransformer.ts index 185300f33..1ac53fd5d 100644 --- a/arkoala/ets-plugin/src/ExtensionStylesTransformer.ts +++ b/arkoala/ets-plugin/src/ExtensionStylesTransformer.ts @@ -16,23 +16,7 @@ import * as ts from 'ohos-typescript' import { AbstractVisitor } from './AbstractVisitor' import { Importer } from './Importer' -import { - ExtendDecorator, - StylesDecorator, - typeParameterExtendsType, - adaptorComponentName, - AnimatableExtendDecorator, - getAnnotationArgument, - prependMemoComment, - dropStylesLike, - asString, - ArkCommonMethodInterface, - T_TypeParameter, - Instance, - CommonInstance, - extendsLikeFunctionName, - prependMemoCommentIfArkoala -} from './utils' +import { ExtendDecorator, StylesDecorator, typeParameterExtendsType, adaptorComponentName, AnimatableExtendDecorator, getAnnotationArgument, prependMemoComment, dropStylesLike, asString, ArkCommonMethodInterface, T_TypeParameter, Instance, CommonInstance, extendsLikeFunctionName } from './utils' import { Any, getDecorator, hasDecorator, id, parameter } from './ApiUtils' function rewriteStyles(node: ts.FunctionDeclaration, importer: Importer): ts.FunctionDeclaration { @@ -65,7 +49,7 @@ function rewriteStyles(node: ts.FunctionDeclaration, importer: Importer): ts.Fun ], true) ) - return prependMemoCommentIfArkoala(declaration, importer) + return importer.__isArkoalaImplementation ? prependMemoComment(declaration) : declaration } function rewriteStylesMethod(node: ts.MethodDeclaration, importer: Importer): ts.MethodDeclaration { @@ -97,7 +81,7 @@ function rewriteStylesMethod(node: ts.MethodDeclaration, importer: Importer): ts ], true) ) - return prependMemoCommentIfArkoala(declaration, importer) + return importer.__isArkoalaImplementation ? prependMemoComment(declaration) : declaration } function rewriteExtend(node: ts.FunctionDeclaration, extendType: string, importer: Importer): ts.FunctionDeclaration { @@ -127,7 +111,7 @@ function rewriteExtend(node: ts.FunctionDeclaration, extendType: string, importe ts.factory.createReturnStatement(singleExpressionStatement.expression) ], true) ) - return prependMemoCommentIfArkoala(declaration, importer) + return importer.__isArkoalaImplementation ? prependMemoComment(declaration) : declaration } function rewriteExtendMethod(node: ts.MethodDeclaration, extendType: string, importer: Importer): ts.MethodDeclaration { @@ -153,7 +137,7 @@ function rewriteExtendMethod(node: ts.MethodDeclaration, extendType: string, imp ts.factory.createReturnStatement(singleExpressionStatement.expression) ], true) ) - return prependMemoCommentIfArkoala(declaration, importer) + return importer.__isArkoalaImplementation ? prependMemoComment(declaration) : declaration } export class ExtensionStylesTransformer extends AbstractVisitor { diff --git a/arkoala/ets-plugin/src/Importer.ts b/arkoala/ets-plugin/src/Importer.ts index 57f05cdf1..ac8114234 100644 --- a/arkoala/ets-plugin/src/Importer.ts +++ b/arkoala/ets-plugin/src/Importer.ts @@ -15,7 +15,6 @@ import * as ts from 'ohos-typescript' import { id } from './ApiUtils' -import { assertUnreachable } from "./utils"; let knownPrefixes = ["@ohos", "@system"] @@ -63,133 +62,11 @@ const ArkoalaSdkArkui: ArkUIVariance = { koalaAdaptor: "@koalaui/arkoala-arkui", } -export enum ArkuiImplementation { - KOALA, - ARKOALA, - ARKTS -} - -function arkuiImplementation(option: string): ArkuiImplementation { - if (option == "@koalaui/arkui") return ArkuiImplementation.KOALA - if (option == "@koalaui/arkoala-arkui") return ArkuiImplementation.ARKOALA - if (option == "@koalaui/arkoala-arkts") return ArkuiImplementation.ARKTS - throw new Error(`Unexpected arkui implementation option: ${option}`) -} - -function implementedPackages(kind: ArkuiImplementation): string[] { - if (kind == ArkuiImplementation.KOALA) return [ - 'ohos.curves', - 'ohos.events.emitter', - 'ohos.matrix44', - 'ohos.router', - 'ohos.data.preferences', - 'ohos.hilog', - 'ohos.mediaquery', - 'ohos.UiTest', - 'ohos.display', - 'ohos/hypium', - 'ohos.net.http', - 'system.router' - ] - if (kind == ArkuiImplementation.ARKOALA) return [ - 'ohos.arkui.testing', - 'ohos.matrix4', - 'ohos.router', - 'system.router' - ] - if (kind == ArkuiImplementation.ARKTS) return [] - - assertUnreachable() -} - -function imports(kind: ArkuiImplementation): string[] { - // TODO: Add special handling for ForEach imports - if (kind == ArkuiImplementation.KOALA) return [ - "PanGestureOptions", - "TapGesture", - "LongPressGesture", - "PanGesture", - "SwipeGesture", - "PinchGesture", - "RotationGesture", - "GestureGroup", - "DataChangeListener", - "ForEach", - "IDataSource", - "Scroller", - "CustomDialogController", - "SwiperController", - "RenderingContextSettings", - "CanvasRenderingContext2D", - "VideoController", - "TabsController", - "TextAreaController", - // generated classes do not see common_ts_ets_api.d.ts - // so, import next five classes from Storage.ts - "AppStorage", - "PersistentStorage", - "Environment", - "SubscribedAbstractProperty", - "LocalStorage", - - "Observed", - "$r", - "$rawfile", - "getContext", - "getInspectorByKey", - "vp2px", - "px2vp", - "fp2px", - "px2fp", - "lpx2px", - "px2lpx", - "animateTo", - ] - if (kind == ArkuiImplementation.ARKOALA) return [ - "ForEach", - "LazyForEach", - "IDataSource", - "SwiperController", - "Scroller", - "VideoController", - "TabsController", - "SearchController", - "PatternLockController", - "AppStorage", - "LocalStorage", - "animateTo", - "TransitionEffect", - "TapGesture", - "LongPressGesture", - "PanGestureOptions", - "PanGesture", - "PinchGesture", - "GestureGroup", - "LinearGradient", - "TextClockController", - "TextTimerController", - "RichEditorController", - "TextAreaController", - "CanvasRenderingContext2D", - "OffscreenCanvasRenderingContext2D", - "ImageBitmap", - "RenderingContextSettings", - "XComponentController", - "Indicator", - "TextInputOptions", - "TextInputController", - "WebController", - "ESObject", - ] - if (kind == ArkuiImplementation.ARKTS) return [] - - assertUnreachable() -} export class Importer { // TODO: Every use of this property is a bad HACK! // Think hard how to eliminate it! - private __isArkoalaImplementation = ArkuiImplementation.KOALA + public __isArkoalaImplementation: boolean = false private allImports: Map> private implementedPackages: Set @@ -201,23 +78,118 @@ export class Importer { subproject: ArkUIVariance - constructor(koalaAdaptor: string = "@koalaui/arkui", public moduleInfo?: (moduleName: string) => any) { - this.__isArkoalaImplementation = arkuiImplementation(koalaAdaptor) - this.subproject = this.isArkoala() - ? ArkoalaSdkArkui - : KoalaArkui - this.implementedPackages = new Set(implementedPackages(this.__isArkoalaImplementation)) + constructor(koalaAdaptor: string = "@koalaui/arkui", public moduleInfo?: (moduleName: string)=>any) { + this.__isArkoalaImplementation = (koalaAdaptor == "@koalaui/arkoala-arkui") + this.subproject = this.__isArkoalaImplementation ? ArkoalaSdkArkui : KoalaArkui + + this.implementedPackages = new Set( + this.__isArkoalaImplementation ? + [ + 'ohos.arkui.testing', + 'ohos.matrix4', + 'ohos.router', + 'system.router' + ] : + [ + 'ohos.curves', + 'ohos.events.emitter', + 'ohos.matrix44', + 'ohos.router', + 'ohos.data.preferences', + 'ohos.hilog', + 'ohos.mediaquery', + 'ohos.UiTest', + 'ohos.display', + 'ohos/hypium', + 'ohos.net.http', + 'system.router' + ] + ) + + // TODO Add special handling for ForEach imports this.allImports = new Map([ - [this.subproject.koalaAdaptor, new Set(imports(this.__isArkoalaImplementation))] + [ + this.subproject.koalaAdaptor, new Set( + this.__isArkoalaImplementation ? [ + "ForEach", + "LazyForEach", + "IDataSource", + "SwiperController", + "Scroller", + "VideoController", + "TabsController", + "SearchController", + "PatternLockController", + "AppStorage", + "LocalStorage", + "animateTo", + "TransitionEffect", + "TapGesture", + "LongPressGesture", + "PanGestureOptions", + "PanGesture", + "PinchGesture", + "GestureGroup", + "LinearGradient", + "TextClockController", + "TextTimerController", + "RichEditorController", + "TextAreaController", + "CanvasRenderingContext2D", + "OffscreenCanvasRenderingContext2D", + "ImageBitmap", + "RenderingContextSettings", + "XComponentController", + "Indicator", + "TextInputOptions", + "TextInputController", + "WebController", + "ESObject", + ] : [ + "PanGestureOptions", + "TapGesture", + "LongPressGesture", + "PanGesture", + "SwipeGesture", + "PinchGesture", + "RotationGesture", + "GestureGroup", + "DataChangeListener", + "ForEach", + "IDataSource", + "Scroller", + "CustomDialogController", + "SwiperController", + "RenderingContextSettings", + "CanvasRenderingContext2D", + "VideoController", + "TabsController", + "TextAreaController", + // generated classes do not see common_ts_ets_api.d.ts + // so, import next five classes from Storage.ts + "AppStorage", + "PersistentStorage", + "Environment", + "SubscribedAbstractProperty", + "LocalStorage", + + "Observed", + "$r", + "$rawfile", + "getContext", + "getInspectorByKey", + "vp2px", + "px2vp", + "fp2px", + "px2fp", + "lpx2px", + "px2lpx", + "animateTo", + ]) + ] ]) } - public isArkoala(): boolean { - return [ - ArkuiImplementation.ARKOALA, - ArkuiImplementation.ARKTS - ].includes(this.__isArkoalaImplementation) - } addImport(pkg: string, subpackage: string | undefined, name: string) { const from = subpackage ? `${pkg}/${subpackage}` : pkg diff --git a/arkoala/ets-plugin/src/LazyTransformer.ts b/arkoala/ets-plugin/src/LazyTransformer.ts index 6740687cc..160a8d315 100644 --- a/arkoala/ets-plugin/src/LazyTransformer.ts +++ b/arkoala/ets-plugin/src/LazyTransformer.ts @@ -88,7 +88,7 @@ export class LazyTransformer extends AbstractVisitor { visitor(beforeChildren: ts.Node): ts.Node { - if (this.importer.isArkoala()) return beforeChildren + if (this.importer.__isArkoalaImplementation) return beforeChildren const node = this.visitEachChild(beforeChildren) if (ts.isEtsComponentExpression(node)) { diff --git a/arkoala/ets-plugin/src/utils.ts b/arkoala/ets-plugin/src/utils.ts index 9294b70f8..07770d8ae 100644 --- a/arkoala/ets-plugin/src/utils.ts +++ b/arkoala/ets-plugin/src/utils.ts @@ -16,7 +16,6 @@ import * as ts from 'ohos-typescript' import * as path from 'path' import { getDeclarationsByNode, getDecorator, hasDecorator, id, isCallDecorator, isDecorator, prependComment, Void } from './ApiUtils' -import { Importer } from "./Importer"; export const ComponentDecorator = "Component" export const EntryDecorator = "Entry" @@ -83,12 +82,6 @@ export function prependMemoComment(node: T): T { return prependComment(node, "* @memo ") } -export function prependMemoCommentIfArkoala(node: T, importer: Importer): T { - return importer.isArkoala() - ? prependMemoComment(node) - : node -} - export function prependDoubleLineMemoComment(node: T): T { return prependComment(prependComment(node, ""), "* @memo ") } @@ -544,8 +537,4 @@ export function voidLambdaType() { [], Void() ) -} - -export function assertUnreachable(): never { - throw new Error(`never`) -} +} \ No newline at end of file -- Gitee