# idlize **Repository Path**: lightningHo/idlize ## Basic Information - **Project Name**: idlize - **Description**: IDL tools - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 54 - **Created**: 2025-05-21 - **Last Updated**: 2025-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #

logo IDLize

## Description This folder contains collection of tools for analyzing and transformation of .d.ts and idl files, with aim of exposing native interfaces to managed languages and runtimes. ## Tools available ### Peer generator Prerequisites: Add registry to the `.npmrc` file in the `$HOME` directory (`~/.npmrc`): ```text registry=https://repo.huaweicloud.com/repository/npm/ @ohos:registry=https://repo.harmonyos.com/npm/ strict-ssl=false lockfile=false @idlizer:registry=https://nexus.bz-openlab.ru:10443/repository/koala-npm/ @koalaui:registry=https://nexus.bz-openlab.ru:10443/repository/koala-npm/ @panda:registry=https://nexus.bz-openlab.ru:10443/repository/koala-npm/ //nexus.bz-openlab.ru:10443/repository/koala-npm/:_auth=a29hbGEtcHViOnkzdCFuMHRoZXJQ ``` Using: ``` npx @idlizer/arkgen@next --dts2peer --input-dir

--arkoala-destination --generate-interface --generator-target arkoala --only-integrated ``` Run: ```bash cd idlize git submodule update --init git submodule update --remote npm i cd arkgen npm run compile ``` #### Generating libace interface files: Given interface definitions it will produce for libace * For libace interface * arkoala_api_generated.h header * api discovery code * component modifiers * etc ```bash node . --dts2peer --input-dir sdk/component --generator-target libace --api-version 140 ``` #### Generating high level language peer files: Given interface definitions it will produce for Arkoala * For high language bindings (arkoala) * C++ glue code * high level language peer classes (TS, ArkTS, Java, etc) * etc ```bash node . --dts2peer --input-dir sdk/component --generator-target arkoala --api-version 140 ``` #### To test for full sdk ```bash cd idlize npm i npm run check:peers:run ``` The output is in `out/ts-peers` directory #### To test with a simple subset sdk ```bash cd idlize npm i npm run check:subset:run ``` The output is in `out/ts-subset` directory ### .d.ts linter Tool checking that given folder (ArkUI interface declarations downloaded by Arkoala build by default) only contains reasonable set of TypeScript features allowed for usage in public interfaces. To run ```bash cd idlize/linter npm i npm run compile node . --input-dir ../interface_sdk-js/api/@internal/component/ets/ ``` Results are in `.//linter.txt` if `--output-dir` parameter specified, otherwise printed to stdout. If there are no unsuppressed errors - exit code is 1, otherwise it is 0. Linter support whitelist files in JSON: ```json { "suppressErrors": ["TYPE_ELEMENT_TYPE", "INDEX_SIGNATURE"], "suppressIdentifiers": { "cursorControl": ["NAMESPACE"] } } ``` can be passed with `--whitelist whitelist.json`. ### IDL generator Tool producing set of WebIDL-compatible interface definitions from .d.ts interface definitions. Still in progress, may produce incorrect IDL. ```bash cd idlize npm i cd arkgen npm run compile node . --dts2idl --input-dir ../arkui-common/ohos-sdk-ets/openharmony/10/ets/component --output-dir ./idl ``` Results are in `./idl/` folder.