From 87328b5cd0b00362055572d4bb1e0c1bdce3310f Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 7 Feb 2025 18:35:15 +0300 Subject: [PATCH 1/5] fix demo of plugins Signed-off-by: Alexander Gorshenev --- arkoala-arkts/libarkts/arktsconfig.json | 4 ++- .../plugins/src/component-transformer.ts | 12 +++++++-- .../plugins/src/parsed-stage-plugin.ts | 12 +++------ arkoala-arkts/libarkts/src/es2panda.ts | 4 +-- .../trivial/user/arktsconfig-pure-sts.json | 17 +++++++----- arkoala-arkts/user/arktsconfig-pure-sts.json | 27 +++++++++++++++++++ 6 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 arkoala-arkts/user/arktsconfig-pure-sts.json diff --git a/arkoala-arkts/libarkts/arktsconfig.json b/arkoala-arkts/libarkts/arktsconfig.json index c3868f430..85e9e51f6 100644 --- a/arkoala-arkts/libarkts/arktsconfig.json +++ b/arkoala-arkts/libarkts/arktsconfig.json @@ -9,7 +9,9 @@ }, { "transform": "./plugins/build/src/parsed-stage-plugin.js", - "stage": "parsed" + "stage": "parsed", + "arkui": "../../../arkui/src/sts" + }, { "transform": "./plugins/build/src/checked-stage-plugin.js", diff --git a/arkoala-arkts/libarkts/plugins/src/component-transformer.ts b/arkoala-arkts/libarkts/plugins/src/component-transformer.ts index 099f0590d..28a48ec8e 100644 --- a/arkoala-arkts/libarkts/plugins/src/component-transformer.ts +++ b/arkoala-arkts/libarkts/plugins/src/component-transformer.ts @@ -17,7 +17,15 @@ import { nullptr } from "@koalaui/interop"; import * as arkts from "@koalaui/libarkts" import { AbstractVisitor } from "./AbstractVisitor"; +export interface ComponentTransformerOptions{ + arkui: string +} + export class ComponentTransformer extends AbstractVisitor { + constructor(private options?: ComponentTransformerOptions) { + super() + } + private context: { componentNames: string[] } = { componentNames: [] } isComponentStruct(node: arkts.StructDeclaration): boolean { @@ -27,8 +35,8 @@ export class ComponentTransformer extends AbstractVisitor { createImportDeclaration() { return arkts.factory.createImportDeclaration( - // arkts.factory.createStringLiteral('@ohos.arkui.runtime'), - arkts.factory.createStringLiteral('../../../arkui/src/sts/arkui'), + // TODO: es2panda has already resolved the "paths" section + arkts.factory.createStringLiteral(this.options?.arkui ?? '@ohos.arkui.runtime'), [ arkts.factory.createImportSpecifier( arkts.factory.createIdentifier('StructBase'), diff --git a/arkoala-arkts/libarkts/plugins/src/parsed-stage-plugin.ts b/arkoala-arkts/libarkts/plugins/src/parsed-stage-plugin.ts index 79186e945..9cd0e6187 100644 --- a/arkoala-arkts/libarkts/plugins/src/parsed-stage-plugin.ts +++ b/arkoala-arkts/libarkts/plugins/src/parsed-stage-plugin.ts @@ -1,16 +1,12 @@ import * as ts from "@koalaui/libarkts" -import { PrintVisitor } from './print-visitor' -import { BuilderLambdaTransformer } from './builder-lambda-transformer' -import { ComponentTransformer } from './component-transformer' +import { ComponentTransformer, ComponentTransformerOptions } from './component-transformer' -export interface TransformerOptions { - trace?: boolean, -} export default function exampleTransformer( - userPluginOptions?: TransformerOptions + userPluginOptions?: ComponentTransformerOptions ) { + console.log("WRAPPER: ", userPluginOptions) return (node: ts.EtsScript) => { - return new ComponentTransformer().visitor(node) + return new ComponentTransformer(userPluginOptions).visitor(node) } } diff --git a/arkoala-arkts/libarkts/src/es2panda.ts b/arkoala-arkts/libarkts/src/es2panda.ts index 6dd1435ca..2b2743e48 100644 --- a/arkoala-arkts/libarkts/src/es2panda.ts +++ b/arkoala-arkts/libarkts/src/es2panda.ts @@ -124,11 +124,11 @@ function invokeWithPlugins(configPath: string, filePath: string, outputPath: str function loadPlugin(configDir: string, jsonPlugin: any) { const pluginPath = jsonPlugin.transform ?? throwError(`arktsconfig plugins objects should specify transform`) /** TODO: read and pass plugin options */ - const options = jsonPlugin.options ?? {} const plugin = (pluginPath.startsWith(".") || pluginPath.startsWith("/")) ? path.resolve(configDir, pluginPath) : pluginPath - return require(plugin).default() + const pluginFunction: (config?: any) => any = require(plugin).default(jsonPlugin) + return pluginFunction } function selectPlugins(configDir: string, plugins: any[], stage: string): ((arg: AstNode) => AstNode) | undefined { diff --git a/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json b/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json index 8a930b0f0..551fb7ed8 100644 --- a/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json +++ b/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json @@ -4,16 +4,21 @@ "outDir": "build/sts/abc", "baseUrl": ".", "paths": { - "@ohos.arkui": ["../arkui/src/sts/arkui.sts"], - "@ohos.arkui.Button": ["../arkui/src/sts/arkui.sts"], - "@ohos.arkui.Column": ["../arkui/src/sts/arkui.sts"], - "@ohos.arkui.Color": ["../arkui/src/sts/arkui.sts"], - "@ohos.arkui.Text": ["../arkui/src/sts/arkui.sts"] + "@ohos.arkui": ["../../arkui/src/sts"] }, "plugins": [ { - "transform": "../libarkts/examples/build/src/example-parsed-transformer.js", + "transform": "@koalaui/libarkts/plugins/printer-plugin", "stage": "parsed" + }, + { + "transform": "@koalaui/libarkts/plugins/parsed-stage-plugin", + "stage": "parsed", + "arkui": "../../../../arkui/src/sts" + }, + { + "transform": "@koalaui/libarkts/plugins/checked-stage-plugin", + "stage": "checked" } ] }, diff --git a/arkoala-arkts/user/arktsconfig-pure-sts.json b/arkoala-arkts/user/arktsconfig-pure-sts.json new file mode 100644 index 000000000..c6c229b25 --- /dev/null +++ b/arkoala-arkts/user/arktsconfig-pure-sts.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "package": "@ohos.example", + "outDir": "build/sts/abc", + "baseUrl": ".", + "paths": { + "@ohos.arkui": ["../arkui/src/sts"] + }, + "plugins": [ + { + "transform": "@koalaui/libarkts/plugins/printer-plugin", + "stage": "parsed" + }, + { + "transform": "@koalaui/libarkts/plugins/parsed-stage-plugin", + "stage": "parsed" + }, + { + "transform": "@koalaui/libarkts/plugins/checked-stage-plugin", + "stage": "checked" + } + ] + }, + "include": [ + "./src/ets/hello.sts" + ] +} -- Gitee From bcd6fbc2f21eb8cd3214ab79c19a0997f911ab15 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 7 Feb 2025 23:13:34 +0300 Subject: [PATCH 2/5] the CI task --- arkoala-arkts/.gitlab-ci.yml | 16 ++++++++++++++++ arkoala-arkts/arkui/package.json | 2 +- arkoala-arkts/trivial/user/package.json | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index aaaa07fef..b73b997d9 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -151,6 +151,22 @@ install node modules (arkoala-arkts): script: - npm run build:common:inc:capi --prefix incremental/common + run capi plugin demo (w/plugin): + stage: build + interruptible: true + extends: + - .linux-vm-shell-task + needs: + - install node modules (arkoala-arkts) + - install node modules (incremental) + - install node modules (interop) + - regenerate plugin-api + before_script: + - !reference [.setup, script] + - npm run panda:sdk:install --prefix arkoala-arkts + - npm run compile --prefix arkoala-arkts/libarkts + script: + - npm run run:user:pure-sts --prefix arkoala-arkts/trivial/user build interop.abc: stage: build diff --git a/arkoala-arkts/arkui/package.json b/arkoala-arkts/arkui/package.json index 2654aa0db..b09a5f050 100644 --- a/arkoala-arkts/arkui/package.json +++ b/arkoala-arkts/arkui/package.json @@ -10,6 +10,6 @@ "build:arkui-no-common:inc": "npm run unmemoize && fast-arktsc --input-files ./arktsconfig-unmemoized.json --output-dir ./build --compiler ../../incremental/tools/panda/arkts/arktsc --link-name arkui-no-common && ninja ${NINJA_OPTIONS} -f build/build.ninja", "build:arkui-no-common": "npm run unmemoize && fast-arktsc --input-files ./arktsconfig-unmemoized.json --output-dir ./build --compiler ../../incremental/tools/panda/arkts/arktsc --link-name arkui-no-common && ninja ${NINJA_OPTIONS} -f build/build.ninja", "unmemoize": "ets-tsc -b ./tsconfig-unmemoize.json && cp -r ./src/generated/arkts ./build/unmemoized/src/generated", - "build:arkui:pure-sts": "../../incremental/tools/panda/arkts/arktsc --arktsconfig arktsconfig-pure-sts.json" + "build:arkui:pure-sts": "mkdir -p build/sts/abc && ../../incremental/tools/panda/arkts/arktsc --arktsconfig arktsconfig-pure-sts.json" } } diff --git a/arkoala-arkts/trivial/user/package.json b/arkoala-arkts/trivial/user/package.json index 8154ca099..d92b95543 100644 --- a/arkoala-arkts/trivial/user/package.json +++ b/arkoala-arkts/trivial/user/package.json @@ -13,7 +13,8 @@ "unmemoize:all": "npm run unmemoize:runtime && npm run unmemoize:arkui-no-common && npm run unmemoize:arkui-common && npm run unmemoize", "build:user": "npm run unmemoize:all && npm run build:user:inc", "build:user:inc": "fast-arktsc --input-files ./arktsconfig-run-unmemoized.json --output-dir ./build --compiler ../../../incremental/tools/panda/arkts/arktsc --link-name user && ninja ${NINJA_OPTIONS} -f build/build.ninja", - "build:user:pure-sts": "../../../incremental/tools/panda/arkts/arktsc-capi --file src/sts/hello.sts --arktsconfig arktsconfig-pure-sts.json --output build/sts/abc/hello.abc --dump-plugin-ast", + "build:user:pure-sts": "npm run build:arkui:pure-sts --prefix ../../arkui && ../../../incremental/tools/panda/arkts/arktsc-capi --file src/sts/hello.sts --arktsconfig arktsconfig-pure-sts.json --output build/sts/abc/hello.abc --dump-plugin-ast", + "run:user:pure-sts": "npm run build:user:pure-sts && ../../../incremental/tools/panda/arkts/ark build/sts/abc/hello.abc --ark-boot-files ../../arkui/build/sts/abc/src/sts/arkui.abc:build/sts/abc/hello.abc --ark-entry-point @ohos.example.src.sts.hello.ArkUIEntry::run", "pack": "npm run cli-tools:check && cd app && DEVECO_SDK_HOME=../../../../arkoala/ohos-sdk/ohos-sdk ../../command-line-tools/hvigor/bin/hvigorw --no-daemon --mode module -p product=default -p module=user@default assembleHar", "har-arm32": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm32 && npm run pack", "har-arm64": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm64 && npm run pack", -- Gitee From 56386dbc0caf0ba8fa0669bc311d8d12779a7dd6 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 7 Feb 2025 23:16:17 +0300 Subject: [PATCH 3/5] more --- .../navigation/user/arktsconfig-pure-sts.json | 27 ------------------- arkoala-arkts/navigation/user/package.json | 1 - arkoala-arkts/shopping/user/package.json | 1 - arkoala-arkts/user/arktsconfig-pure-sts.json | 27 ------------------- 4 files changed, 56 deletions(-) delete mode 100644 arkoala-arkts/navigation/user/arktsconfig-pure-sts.json delete mode 100644 arkoala-arkts/user/arktsconfig-pure-sts.json diff --git a/arkoala-arkts/navigation/user/arktsconfig-pure-sts.json b/arkoala-arkts/navigation/user/arktsconfig-pure-sts.json deleted file mode 100644 index c6c229b25..000000000 --- a/arkoala-arkts/navigation/user/arktsconfig-pure-sts.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "package": "@ohos.example", - "outDir": "build/sts/abc", - "baseUrl": ".", - "paths": { - "@ohos.arkui": ["../arkui/src/sts"] - }, - "plugins": [ - { - "transform": "@koalaui/libarkts/plugins/printer-plugin", - "stage": "parsed" - }, - { - "transform": "@koalaui/libarkts/plugins/parsed-stage-plugin", - "stage": "parsed" - }, - { - "transform": "@koalaui/libarkts/plugins/checked-stage-plugin", - "stage": "checked" - } - ] - }, - "include": [ - "./src/ets/hello.sts" - ] -} diff --git a/arkoala-arkts/navigation/user/package.json b/arkoala-arkts/navigation/user/package.json index 8154ca099..11836c04d 100644 --- a/arkoala-arkts/navigation/user/package.json +++ b/arkoala-arkts/navigation/user/package.json @@ -13,7 +13,6 @@ "unmemoize:all": "npm run unmemoize:runtime && npm run unmemoize:arkui-no-common && npm run unmemoize:arkui-common && npm run unmemoize", "build:user": "npm run unmemoize:all && npm run build:user:inc", "build:user:inc": "fast-arktsc --input-files ./arktsconfig-run-unmemoized.json --output-dir ./build --compiler ../../../incremental/tools/panda/arkts/arktsc --link-name user && ninja ${NINJA_OPTIONS} -f build/build.ninja", - "build:user:pure-sts": "../../../incremental/tools/panda/arkts/arktsc-capi --file src/sts/hello.sts --arktsconfig arktsconfig-pure-sts.json --output build/sts/abc/hello.abc --dump-plugin-ast", "pack": "npm run cli-tools:check && cd app && DEVECO_SDK_HOME=../../../../arkoala/ohos-sdk/ohos-sdk ../../command-line-tools/hvigor/bin/hvigorw --no-daemon --mode module -p product=default -p module=user@default assembleHar", "har-arm32": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm32 && npm run pack", "har-arm64": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm64 && npm run pack", diff --git a/arkoala-arkts/shopping/user/package.json b/arkoala-arkts/shopping/user/package.json index 8154ca099..11836c04d 100644 --- a/arkoala-arkts/shopping/user/package.json +++ b/arkoala-arkts/shopping/user/package.json @@ -13,7 +13,6 @@ "unmemoize:all": "npm run unmemoize:runtime && npm run unmemoize:arkui-no-common && npm run unmemoize:arkui-common && npm run unmemoize", "build:user": "npm run unmemoize:all && npm run build:user:inc", "build:user:inc": "fast-arktsc --input-files ./arktsconfig-run-unmemoized.json --output-dir ./build --compiler ../../../incremental/tools/panda/arkts/arktsc --link-name user && ninja ${NINJA_OPTIONS} -f build/build.ninja", - "build:user:pure-sts": "../../../incremental/tools/panda/arkts/arktsc-capi --file src/sts/hello.sts --arktsconfig arktsconfig-pure-sts.json --output build/sts/abc/hello.abc --dump-plugin-ast", "pack": "npm run cli-tools:check && cd app && DEVECO_SDK_HOME=../../../../arkoala/ohos-sdk/ohos-sdk ../../command-line-tools/hvigor/bin/hvigorw --no-daemon --mode module -p product=default -p module=user@default assembleHar", "har-arm32": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm32 && npm run pack", "har-arm64": "npm run build:user && npm run --prefix ../../../arkoala/ohos-sdk download && node scripts/build-har.mjs --name user --arch arm64 && npm run pack", diff --git a/arkoala-arkts/user/arktsconfig-pure-sts.json b/arkoala-arkts/user/arktsconfig-pure-sts.json deleted file mode 100644 index c6c229b25..000000000 --- a/arkoala-arkts/user/arktsconfig-pure-sts.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "package": "@ohos.example", - "outDir": "build/sts/abc", - "baseUrl": ".", - "paths": { - "@ohos.arkui": ["../arkui/src/sts"] - }, - "plugins": [ - { - "transform": "@koalaui/libarkts/plugins/printer-plugin", - "stage": "parsed" - }, - { - "transform": "@koalaui/libarkts/plugins/parsed-stage-plugin", - "stage": "parsed" - }, - { - "transform": "@koalaui/libarkts/plugins/checked-stage-plugin", - "stage": "checked" - } - ] - }, - "include": [ - "./src/ets/hello.sts" - ] -} -- Gitee From e362f367f5893762a08f60689a5eed637e845a4d Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 7 Feb 2025 23:51:31 +0300 Subject: [PATCH 4/5] more --- arkoala-arkts/.gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index b73b997d9..2f836098f 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -164,7 +164,8 @@ install node modules (arkoala-arkts): before_script: - !reference [.setup, script] - npm run panda:sdk:install --prefix arkoala-arkts - - npm run compile --prefix arkoala-arkts/libarkts + # need the library as well as the plugins built + - npm run run --prefix arkoala-arkts/libarkts script: - npm run run:user:pure-sts --prefix arkoala-arkts/trivial/user -- Gitee From 5a950c951eea43f067f51844a4990fc0f3ad0b17 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Sat, 8 Feb 2025 00:36:31 +0300 Subject: [PATCH 5/5] more --- arkoala-arkts/trivial/user/src/sts/hello.sts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/arkoala-arkts/trivial/user/src/sts/hello.sts b/arkoala-arkts/trivial/user/src/sts/hello.sts index 2bf90253c..2c01dc061 100644 --- a/arkoala-arkts/trivial/user/src/sts/hello.sts +++ b/arkoala-arkts/trivial/user/src/sts/hello.sts @@ -25,8 +25,7 @@ struct MyStateSample { } export class ArkUIEntry { - // static mandatory: boolean = ArkUIEntry.run() - static run(): boolean { + static run() { console.log("About to invoke the struct") // The proper call fails because of a compiler frontend bug. // MyStateSample({} as __Options_MyStateSample) @@ -36,6 +35,5 @@ export class ArkUIEntry { {} as __Options_MyStateSample, undefined ) - return true } } -- Gitee