# idlize **Repository Path**: npisanov/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**: 102 - **Created**: 2024-08-28 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IDLizer ## Description This folder contains collection of tools for analyzing and transformation of .d.ts files, with aim of exposing ArkUI interfaces to more 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 ``` Run: ```bash cd idlize git submodule update --init git submodule update --remote npm i npm run compile ``` #### Generating libace interface files: Given interface definitions it will produce for libace * For libace interface * arkoala_api.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 `generated/peers` directory #### To test with a simple subset sdk ```bash cd idlize npm i npm run check:subset:run ``` The output is in `generated/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 npm i npm run compile node . --linter --input-dir ../arkui-common/ohos-sdk-ets/openharmony/10/ets/component ``` 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 `--linter-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 npm run compile node . --dts2idl --input-dir ../arkui-common/ohos-sdk-ets/openharmony/10/ets/component ``` Results are in `./idl/` folder. ### C headers generator Tool producing set of C interface definitions from .d.ts interface definitions. Still in progress, will produce incorrect C now. ```bash cd idlize npm i npm run compile node . --idl2h --input-dir ../arkui-common/ohos-sdk-ets/openharmony/10/ets/component ``` Results are in `./headers/arkoala_api.h`. ### Typescript declaration files generator Tool producing set of typescript declaration files from .idl interface definitions. ```bash cd idlize npm i npm run compile node . --idl2dts --input-dir ./test/from-idl/idl ``` By default, results are in `./dts`. ### Tests Use the `IDLIZE_SEED` environment variable to set a predefined seed for the random generator used in tests. Set the `IDLIZE_SEED` environment variable to `RANDOM` to use a random seed. Configure and run the subset fuzzing tests: ```bash npm run configure:native-node-host-subset npm run check:subset:fuzz ``` To test a specific test or method in fuzzing tests use `--test-interface` and `--test-method` options in the `check:subset:fuzz` task: ```bash node . --dts2test --input-dir ./tests/subset/ets --output-dir ./generated/fuzz --test-interface Test --test-method testBoolean ```