diff --git a/arkoala-arkts/arkui/package.json b/arkoala-arkts/arkui/package.json index 24bd6e63ea68211fb894dc3460281c5fa3aef7f4..306c7c7bf25c9af4ab62bd53e6c0beba36acdb33 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 0000000000000000000000000000000000000000..cfd73fa4c056a4dc5eb02f694fb0a5d27f45f202 --- /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 986a01b3eaab69d7fe1cc4ebb6d82ebadc674264..c6b9b0b9c7e9fc736fa294961d2c64398e865bdd 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), ] )