From 96e85bede8e07b99d52c82525fee154483db19fd Mon Sep 17 00:00:00 2001 From: Aleksandr Veselov Date: Fri, 18 Oct 2024 18:11:25 +0300 Subject: [PATCH] Create stub for arkts OHOS router, compile @Entry --- arkoala-arkts/arkui/package.json | 11 ++++++++- arkoala-arkts/arkui/src/ohos.router.ts | 25 +++++++++++++++++++++ arkoala/ets-plugin/src/StructTransformer.ts | 8 ++++++- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 arkoala-arkts/arkui/src/ohos.router.ts diff --git a/arkoala-arkts/arkui/package.json b/arkoala-arkts/arkui/package.json index 24bd6e63e..306c7c7bf 100644 --- a/arkoala-arkts/arkui/package.json +++ b/arkoala-arkts/arkui/package.json @@ -3,7 +3,16 @@ "version": "1.4.1", "description": "", "main": "build/ts/src/index.js", - "types": "build/ts/src/index.d.ts", + "types": "./index.d.ts", + "typesVersions": { + "*": { + "*": ["./build/ts/src/*"] + } + }, + "exports": { + ".": "./build/ts/src/index.js", + "./ohos.router": "./build/ts/src/ohos.router.js" + }, "scripts": { "compile:arkts:unmemoized": "npm run unmemoize && bash ../../incremental/tools/panda/arkts/arktsc --arktsconfig arktsconfig-unmemoized.json --ets-module", "compile:ts": "memo-tsc -b ./tsconfig.json", diff --git a/arkoala-arkts/arkui/src/ohos.router.ts b/arkoala-arkts/arkui/src/ohos.router.ts new file mode 100644 index 000000000..cfd73fa4c --- /dev/null +++ b/arkoala-arkts/arkui/src/ohos.router.ts @@ -0,0 +1,25 @@ +const arkuiEntries = new Map< + string, + /** @memo */ + () => void +>() + +export async function getArkuiEntry(page: string): Promise< + /** @memo */ + () => void +> { + const content = arkuiEntries.get(page) + if (!content) { + throw new Error(`No registered page for url ${JSON.stringify(page)}`) + } + + return content +} + +export function registerArkuiEntry( + /** @memo */ + content: () => void, + page: string +) { + arkuiEntries.set(page, content) +} diff --git a/arkoala/ets-plugin/src/StructTransformer.ts b/arkoala/ets-plugin/src/StructTransformer.ts index 986a01b3e..c6b9b0b9c 100644 --- a/arkoala/ets-plugin/src/StructTransformer.ts +++ b/arkoala/ets-plugin/src/StructTransformer.ts @@ -693,7 +693,13 @@ export class StructTransformer extends AbstractVisitor { id(this.importer.withOhosImport("ohos.router", "registerArkuiEntry")), undefined, [ - id(ts.idText(node.name!)), + ts.factory.createArrowFunction([], [], [], undefined, undefined, + ts.factory.createBlock([ + ts.factory.createExpressionStatement( + ts.factory.createCallExpression(id(ts.idText(node.name!)), [], []) + ), + ]) + ), ts.factory.createStringLiteral(routerPage), ] ) -- Gitee