# 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
#
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.