diff --git a/docs/guide/DEVELOP_ZH.md b/docs/guide/DEVELOP_ZH.md
deleted file mode 100644
index c5e34992d874d410f79a522f5157aaaed13e14f1..0000000000000000000000000000000000000000
--- a/docs/guide/DEVELOP_ZH.md
+++ /dev/null
@@ -1,120 +0,0 @@
-# NAPI框架生成工具开发说明
-
-若当前工具功能不满足开发者需求,开发者需增强工具能力,则可基于已有源码进行工具二次开发,编译打包生成自定义的可执行文件和插件。
-
-## 工具开发
-
-### 可执行文件开发说明
-
-#### 环境说明
-
-系统:建议Ubuntu 20.04或者Windows 10
-
-#### 开发步骤
-
-##### Linux
-
-1.安装typescript:在napi_generator/src目录下执行命令:
-
- npm i typescript
-
-2.安装stdio:在napi_generator目录下执行命令:
-
- npm i stdio
-
-3.安装pkg : 在napi_generator目录下执行命令:
-
- sudo npm i -g pkg
-
-4.集成clang-format(可选步骤):
-
- 如果需要工具自动格式化生成的C++代码,可执行此步骤。
- 将windows版的clang-format.exe程序和linux版的clang-format程序拷贝到napi_generator目录下。
- clang-format程序可从OpenHarmony编译环境获取:
- windows版:OpenHarmony/prebuilts/clang/ohos/windows-x86_64/llvm/bin/clang-format.exe
- Linux版:OpenHarmony/prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/bin/clang-format
-
-5.打包三个版本 : 执行命令:
-
- pkg .
-
-执行以上步骤后,即可在napi_generator目录下生成Windows、linux、mac系统下的可执行程序:
-
- napi_generator-win.exe、napi_generator-linux、napi_generator-macos
-
-6.根据需求打包指定系统下的可执行文件。若想只打包windows系统下可执行文件,可执行命令:
-
- pkg -t node14-win . -o napi_generator-win.exe
-
-若想只打包linux系统下可执行文件,可执行命令:
-
- pkg -t node14-linux . -o napi_generator-linux
-
-若想只打包macos系统下可执行文件,可执行命令:
-
- pkg -t node14-macos . -o napi_generator-macos
-
-备注:参数-t为指定系统,参数-o为指定可执行文件名称。
-
-
-##### Windows
-
-1.安装typescript:使用管理员身份在napi_generator/src目录下执行命令:
-
- npm i typescript
-
-2.安装stdio:使用管理员身份在napi_generator目录下执行命令:
-
- npm i stdio
-
-3.安装pkg : 使用管理员身份在napi_generator目录下执行命令:
-
- npm i -g pkg
-
-4.集成clang-format(可选步骤):
-
- 如果需要工具自动格式化生成的C++代码,可执行此步骤。
- 将windows版的clang-format.exe程序和linux版的clang-format程序拷贝到napi_generator目录下。
- clang-format程序可从OpenHarmony编译环境获取:
- windows版:OpenHarmony/prebuilts/clang/ohos/windows-x86_64/llvm/bin/clang-format.exe
- Linux版:OpenHarmony/prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/bin/clang-format
-
-5.打包三个版本 : 使用管理员身份执行命令:
-
- pkg .
-
-执行以上步骤后,即可在napi_generator目录下生成Windows、linux、mac系统下的可执行程序:
-
- napi_generator-win.exe、napi_generator-linux、napi_generator-macos
-
-6.根据需求打包指定系统下的可执行文件。若想只打包windows系统下可执行文件,可执行命令:
-
- pkg -t node14-win . -o napi_generator-win.exe
-
-若想只打包linux系统下可执行文件,可执行命令:
-
- pkg -t node14-linux . -o napi_generator-linux
-
-若想只打包macos系统下可执行文件,可执行命令:
-
- pkg -t node14-macos . -o napi_generator-macos
-
-### VS插件开发说明
-
-具体的插件开发步骤,可以左键单击以下链接了解:
-
-[VS插件开发说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_vs_plugin/docs/napi/DEVELOP_ZH.md)
-
-### DevEco Studio上使用的IntelliJ插件开发说明
-
-具体的插件开发步骤,可以左键单击以下链接了解:
-
-[DevEco Studio上使用的IntelliJ插件开发说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_IntelliJ_plugin/docs/napi/DEVELOP_ZH.md)
-
-## 工具测试
- 进行工具二次开发后,本地可进行单元测试、story特性测试确保工具的可用性。左键单击以下链接了解详情:
-
- [单元测试](https://gitee.com/openharmony/napi_generator/blob/master/test/unittest/README_ZH.md)
-
- [story测试](https://gitee.com/openharmony/napi_generator/blob/master/test/storytest/README_ZH.md)
-
diff --git a/docs/guide/ENSEMBLE_METHOD_4.0CFGCODE.md b/docs/guide/ENSEMBLE_METHOD_4.0CFGCODE.md
deleted file mode 100644
index 0558607b20a7bebb6d2482505e9cdae5cdb3f921..0000000000000000000000000000000000000000
--- a/docs/guide/ENSEMBLE_METHOD_4.0CFGCODE.md
+++ /dev/null
@@ -1,171 +0,0 @@
-# 手动配置业务代码后集成到OpenHarmony的方法
-
-## 场景说明
-
-为了实现工具生成的接口被其它子系统或者应用调用,需将生成的代码编译集成到OpenHarmony系统中,使其生成动态库,供OpenHarmony应用层调用。
-本文介绍如何手动配置业务代码并将生成的代码集成到OpenHarmony 4.0 Release。
-
-## 4.0 版本
-
-### 建立模块位置
-
-模块目录理论上可在OpenHarmony工程的任一位置,假设OpenHarmony代码库的目录为OHOS_SRC,在OHOS_SRC/foundation目录下,建测试模块目录:napitest。napitest目录结构如下:
-
- napitest
- |-- binding.gyp
- |-- BUILD.gn
- |-- bundle.json
- |-- napitest.cpp
- |-- napitest.h
- |-- napitest_middle.h
- |-- napitest_middle.cpp
- |-- test.sh
- |-- tool_utility.cpp
- |-- tool_utility.h
-
-其中bundle.json为新增的编译配置文件,其它为工具生成的代码。
-
-### 编译修改点
-
-#### 修改bundle.json文件
-
-其中destPath选项中的"//foundation/napitest"指的是napitest目录,":napitest"指的是上面BUILD.gn中的目标ohos_shared_library("napitest")。
-
-```
-{
- "name": "@ohos/napitest",
- "description": "napitest provides atomic capabilities",
- "version": "4.0",
- "license": "Apache License 2.0",
- "publishAs": "code-segment",
- "segment": {
- "destPath": "foundation/napitest"
- },
- "dirs": {},
- "scripts": {},
- "component": {
- "name": "napitest",
- "subsystem": "napitest",
- "features": [],
- "adapted_system_type": [
- "standard"
- ],
- "rom": "10000KB",
- "ram": "10000KB",
- "deps": {
- "components": [
- "ace_napi",
- "ipc_core",
- "libhilog"
- ],
- "third_party": [
- "node"
- ]
- },
- "build": {
- "sub_component": [
- "//foundation/napitest:napitest"
- ],
- "inner_kits": [
- {
- "header": {
- "header_base": "//foundation/napitest",
- "header_files": [
- "tool_utility.h",
- "napitest.h",
- "napitest_middle.h"
- ]
- },
- "name": "//foundation/napitest:napitest"
- }
- ]
- }
- }
-}
-```
-
-#### 修改napitest.cpp文件
-
-为方便调试,在napitest.cpp文件中增加业务代码。以修改napitest.cpp文件为例,在以下方法中增加业务代码,
-
-在sayHello方法中增加注册的object回调方法的调用:
-
-```
-...
-// 业务代码调用 onSayHelloStart callback
-napitest::napitest_interface::NodeISayHello::listener_.NodeISayHelloListener_onSayHelloStartCallback(info1);
-// 业务代码调用 onSayHelloEnd callback
-napitest::napitest_interface::NodeISayHello::listener_.NodeISayHelloListener_onSayHelloEndCallback(info2);
-...
-```
-
-在sayHi方法中增加register注册的回调方法的调用:
-
-```
-...
-napitest::napitest_interface::NodeISayHello *ptr = new napitest::napitest_interface::NodeISayHello();
-uint32_t callbackNum = 50;
-ptr->CallbackfuncCallback(callbackNum);
-delete ptr;
-...
-```
-
-在sayHelloWithResponse方法中增加Promise回调方法的调用:
-
-```
-...
-out.errMsg = "";
-out.response = "rec hello.";
-out.result = 0;
-...
-```
-
-在funcTest方法中增加普通函数的业务逻辑:
-
-```
-...
-if (v) {
- out = "ret is true";
-} else {
- out = "ret is false";
-}
-...
-```
-
-增加业务代码之后的文件如下所示:
-
-[napitest.cpp](https://gitee.com/openharmony/napi_generator/blob/master/examples/napitest.cpp)
-
-#### 增加子系统
-
-在源码/build/subsystem_config.json中增加子系统选项。如下所示:
-
-```
-"napitest": {
- "path": "foundation/napitest",
- "name": "napitest"
- }
-```
-
-### 添加功能模块
-
-在产品配置中添加上述子系统的功能模块,编译到产品产出文件中,例如在源码vendor/hihope/rk3568/config.json中增加part选项,其中第一个napitest就是BUILD.gn文件中的subsystem_name,第二个napitest就是BUILD.gn文件中的part_name。
-
-```
-{
- "subsystem": "napitest",
- "components": [
- {
- "component": "napitest",
- "features": []
- }
- ]
-}
-```
-
-### 编译验证
-
-编译成功后,就会在 /out/产品名/packages/phone/system/lib/module/ 生成libnapitest.z.so,如下所示:
-
- /out/rk3568/packages/phone/system/lib/module
-
diff --git a/docs/guide/ENSEMBLE_METHOD_ZH.md b/docs/guide/ENSEMBLE_METHOD_ZH.md
deleted file mode 100644
index 11fe3110985d7dfe6d420afa416c85b65fdef03f..0000000000000000000000000000000000000000
--- a/docs/guide/ENSEMBLE_METHOD_ZH.md
+++ /dev/null
@@ -1,310 +0,0 @@
-# NAPI框架生成代码集成到OpenHarmony的方法
-
-## 场景说明
-
-为了实现工具生成的接口被其他子系统或者应用调用,需将生成的代码编译集成到OpenHarmony系统中,使其生成动态库,供OpenHarmony应用层调用。
-本文介绍如何将工具生成的源码利用OpenHarmony编译系统生成动态库供应用层调用,主要是有以下两种方式,分别为增加ohos.build文件方式和增加bundle.json文件方式。
-
-## 4.0 版本
-
-### 建立模块位置
-
-模块目录理论上可在OpenHarmony工程的任一位置,假设OpenHarmony代码库的目录为OHOS_SRC,在OHOS_SRC/foundation目录下,建测试模块目录:napitest。napitest目录结构如下:
-
- napitest
- |-- generatorCode // 工具代码部分
- |-- |-- binding.gyp
- |-- |-- BUILD.gn
- |-- |-- bundle.json
- |-- |-- napitest.cpp
- |-- |-- napitest.h
- |-- |-- napitest_middle.h
- |-- |-- napitest_middle.cpp
- |-- |-- test.sh
- |-- |-- tool_utility.cpp
- |-- |-- tool_utility.h
- |-- |-- napi_gen.log
- |-- serviceCode // 放置业务代码部分
- |-- |-- NodeISayHello.h
- |-- |-- NodeISayHello.cpp
-
-其中generatorCode为工具生成的代码,serviceCode 为用户配置的业务代码, bundle.json 为新增的编译配置文件。
-
-### 编译修改点
-
-#### 修改bundle.json文件
-
-其中destPath选项中的"//foundation/napitest/generatorCode"指的是napitest目录,":napitest"指的是上面BUILD.gn中的目标ohos_shared_library("napitest")。
-
-```
-{
- "name": "@ohos/napitest",
- "description": "napitest provides atomic capabilities",
- "version": "4.0",
- "license": "Apache License 2.0",
- "publishAs": "code-segment",
- "segment": {
- "destPath": "foundation/napitest/generatorCode"
- },
- "dirs": {},
- "scripts": {},
- "component": {
- "name": "napitest",
- "subsystem": "napitest",
- "features": [],
- "adapted_system_type": [
- "standard"
- ],
- "rom": "10000KB",
- "ram": "10000KB",
- "deps": {
- "components": [
- "ace_napi",
- "ipc_core",
- "libhilog"
- ],
- "third_party": [
- "node"
- ]
- },
- "build": {
- "sub_component": [
- "//foundation/napitest/generatorCode:napitest"
- ],
- "inner_kits": [
- {
- "header": {
- "header_base": "//foundation/napitest/generatorCode",
- "header_files": [
- "tool_utility.h",
- "napitest.h",
- "napitest_middle.h"
- ]
- },
- "name": "//foundation/napitest/generatorCode:napitest"
- }
- ]
- }
- }
-}
-```
-
-#### 增加子系统
-
-在源码/build/subsystem_config.json中增加子系统选项。如下所示:
-
-```
-"napitest": {
- "path": "foundation/napitest/generatorCode",
- "name": "napitest"
- }
-```
-
-### 添加功能模块
-
-在产品配置中添加上述子系统的功能模块,编译到产品产出文件中,例如在源码vendor/hihope/rk3568/config.json中增加part选项,其中第一个napitest就是BUILD.gn文件中的subsystem_name,第二个napitest就是BUILD.gn文件中的part_name。
-
-```
-{
- "subsystem": "napitest",
- "components": [
- {
- "component": "napitest",
- "features": []
- }
- ]
-}
-```
-
-### 编译验证
-
-编译成功后,就会在 /out/产品名/packages/phone/system/lib/module/ 生成libnapitest.z.so,如下所示:
-
- /out/rk3568/packages/phone/system/lib/module
-
-### 备注
-
-若自动配置业务代码不能满足业务场景,用户可以手动配置业务代码,以下为用户手动配置业务代码并集成到OpenHarmony上的方法:
-
-[4.0版本手动配置业务代码集成方法](https://gitee.com/openharmony/napi_generator/blob/master/docs/guide/ENSEMBLE_METHOD_4.0CFGCODE.md)
-
-## 3.2 版本
-
-### 建立模块位置
-
-模块目录理论上可在OpenHarmony工程的任一位置,假设OpenHarmony代码库的目录为OHOS_SRC,在OHOS_SRC/foundation目录下,建测试模块目录:napitest。napitest目录结构如下:
-
- napitest
- |-- binding.gyp
- |-- BUILD.gn
- |-- bundle.json
- |-- napitest.cpp
- |-- napitest.h
- |-- napitest_middle.h
- |-- napitest_middle.cpp
- |-- test.sh
- |-- tool_utility.cpp
- |-- tool_utility.h
-
-其中bundle.json为新建的编译配置文件,其它为工具生成的代码。
-
-### 编译修改点
-
-#### 修改bundle.json文件
-
-其中destPath选项中的"//foundation/napitest"指的是napitest目录,":napitest"指的是上面BUILD.gn中的目标ohos_shared_library("napitest")。
-
-```
-{
- "name": "@ohos/napitest",
- "description": "napitest provides atomic capabilities",
- "version": "3.2",
- "license": "Apache License 2.0",
- "publishAs": "code-segment",
- "segment": {
- "destPath": "foundation/napitest"
- },
- "dirs": {},
- "scripts": {},
- "component": {
- "name": "napitest",
- "subsystem": "napitest",
- "features": [],
- "adapted_system_type": [
- "standard"
- ],
- "rom": "10000KB",
- "ram": "10000KB",
- "deps": {
- "components": [
- "ace_napi",
- "ipc_core",
- "libhilog"
- ],
- "third_party": [
- "node"
- ]
- },
- "build": {
- "sub_component": [
- "//foundation/napitest:napitest"
- ],
- "inner_kits": [
- {
- "header": {
- "header_base": "//foundation/napitest",
- "header_files": [
- "tool_utility.h",
- "napitest.h",
- "napitest_middle.h"
- ]
- },
- "name": "//foundation/napitest:napitest"
- }
- ]
- }
- }
-}
-```
-
-#### 修改napitest.cpp文件
-
-为方便调试,在napitest.cpp文件中增加业务代码。以修改napitest.cpp文件为例,在以下方法中增加业务代码,
-
-在sayHello方法中增加注册的object回调方法的调用:
-
-```
-...
-// 业务代码调用 onSayHelloStart callback
-napitest::napitest_interface::NodeISayHello::listener_.NodeISayHelloListener_onSayHelloStartCallback(info1);
-// 业务代码调用 onSayHelloEnd callback
-napitest::napitest_interface::NodeISayHello::listener_.NodeISayHelloListener_onSayHelloEndCallback(info2);
-...
-```
-
-在sayHi方法中增加register注册的回调方法的调用:
-
-```
-...
-napitest::napitest_interface::NodeISayHello *ptr = new napitest::napitest_interface::NodeISayHello();
-uint32_t callbackNum = 50;
-ptr->CallbackfuncCallback(callbackNum);
-delete ptr;
-...
-```
-
-在sayHelloWithResponse方法中增加Promise回调方法的调用:
-
-```
-...
-out.errMsg = "";
-out.response = "rec hello.";
-out.result = 0;
-...
-```
-
-在funcTest方法中增加普通函数的业务逻辑:
-
-```
-...
-if (v) {
- out = "ret is true";
-} else {
- out = "ret is false";
-}
-...
-```
-
-增加业务代码之后的文件如下所示:
-
-[napitest.cpp](https://gitee.com/openharmony/napi_generator/blob/master/examples/napitest.cpp)
-
-#### 增加子系统
-
-在源码/build/subsystem_config.json中增加子系统选项。如下所示:
-
-```
-"napitest": {
- "path": "foundation/napitest",
- "name": "napitest"
- }
-```
-
-### 添加功能模块
-
-在产品配置中添加上述子系统的功能模块,编译到产品产出文件中,例如在源码vendor/hihope/rk3568/config.json中增加part选项,其中第一个napitest就是BUILD.gn文件中的subsystem_name,第二个napitest就是BUILD.gn文件中的part_name。
-
-```
-{
- "subsystem": "napitest",
- "components": [
- {
- "component": "napitest",
- "features": []
- }
- ]
-}
-```
-
-### 编译验证
-
-编译成功后,就会在 /out/产品名/packages/phone/system/lib/module/ 生成libnapitest.z.so,如下所示:
-
- /out/rk3568/packages/phone/system/lib/module
-
-## 3.1 版本
-
-[3.1版本集成方法](https://gitee.com/openharmony/napi_generator/blob/master/docs/guide/ENSEMBLE_METHOD_3.1VERSION.md)
-
-## 总结
-
-3.1版本两种集成方式使用场景说明:
-
-ohos.build方式集成:适合3.0前版本使用。
-
-bundle.json方式集成:兼容ohos.build方式,但3.1及以后版本建议使用此种方式集成。
-
-3.2版本适合使用bundle.json方式集成。
-
-4.0版本适合使用bundle.json方式集成。
-
diff --git a/docs/guide/INSTRUCTION_ZH.md b/docs/guide/INSTRUCTION_ZH.md
deleted file mode 100644
index f89b9ef9007b60c05e7800c67bb8075e02eadf0e..0000000000000000000000000000000000000000
--- a/docs/guide/INSTRUCTION_ZH.md
+++ /dev/null
@@ -1,285 +0,0 @@
-# NAPI框架生成工具使用说明
-## 简介
-
-NAPI框架生成工具支持三种入口,分别是可执行程序、VS Code插件、DevEco Studio上使用的IntelliJ插件,使用者可以根据自己的需要选择合适的工具。
-
-1.可执行文件下载路径如下(由于网络原因,可能会导致有的下载链接失效,因此提供了以下三个下载链接):
-
-[可执行文件下载链接1](http://ftpkaihongdigi.i234.me:5000/sharing/yaRiKSjBI)
-
-[可执行文件下载链接2](http://ftp.kaihong.com:5000/fsdownload/yaRiKSjBI/)
-
-[可执行文件下载链接3](http://ftp.kaihongdigi.com:5000/fsdownload/yaRiKSjBI/)
-
-访问密码:kaihong
-
-压缩包解压密码:kaihong20231121
-
-DevEco Studio上使用的IntelliJ插件下载路径如下:
-
-[DevEco Studio上使用的IntelliJ插件下载链接](https://plugins.jetbrains.com/plugin/19593-napi-generator/versions)
-
-## 工具介绍
-
-通过NAPI框架生成工具,使用者可输入一个接口定义的ts文件,一键生成NAPI框架代码、业务代码框架、GN脚本等文件,并使用生成的NAPI接口及功能。使用者也可以输入一个定义方法的.h头文件,反向生成ts文件。
-
-
-
-## 预检查
-
-napi_generator的可执行程序方式和插件方式都具有预检查的功能,如果.d.ts文件中存在语法错误,那么执行的时候命令行会打印出错误信息,指出代码中存在错误的行号。使用效果如下:
-
- joey@joey-virtual-machine:~/code/napi_test$ ./napi_generator-linux -f @ohos.napitest.d.ts
- @ohos.napitest.d.ts (33,12): Identifier expected.
- @ohos.napitest.d.ts (33,13): ';' expected.
- @ohos.napitest.d.ts (33,13): An identifier or keyword cannot immediately follow a numeric literal.
- @ohos.napitest.d.ts (33,13): Cannot find name 'shutdownDevice'.
- @ohos.napitest.d.ts (33,28): Cannot find name 'reason'.
- @ohos.napitest.d.ts (33,34): ',' expected.
- @ohos.napitest.d.ts (33,36): 'string' only refers to a type, but is being used as a value here.
- @ohos.napitest.d.ts (33,43): ';' expected.
- @ohos.napitest.d.ts (33,49): Expression expected.
-
- joey@joey-virtual-machine:~/code/napi_test$
-
-@ohos.napitest.d.ts (33,49),其中括号中第一个参数含义为行号,第二个参数含义为列号。
-
-预检查的触发方式与生成框架的入口一致,使用方法参见生成框架描述。
-
-## 生成框架
-
-### 自动配置业务代码用例
-
-1.ts文件用例
-
- [@ohos.napitest.d.ts](https://gitee.com/openharmony/napi_generator/blob/master/examples/ts/@ohos.napitest.d.ts)
-
-注册关键字说明
-
-(1) registerXXX/unRegisterXXX
-
-register与unRegister成对使用, registerXXX用于注册回调,其参数即为注册的回调函数,注册之后在其它普通方法中即可在C++层调用registerXXX注册的回调函数;unRegisterXXX用于注销回调,其参数即为需要注销的回调函数,注销之后将无法再在C++层调用注销的回调函数。如:
-
-```
-export class NodeISayHello
-{
- ...
- // register注册回调
- registerCallbackfunc(cb : (wid: number) => string);
- // unRegister注销回调
- unRegisterCallbackfunc(cb : (wid: number) => string);
- ...
-}
-```
-
-其中注册/注销的回调方法为箭头函数 (wid: number) => string。注册回调之后,工具会生成回调方法CallbackfuncCallback,业务代码中用户自行定义回调时机进而通过回调接口调用回调,若回调被注销,则业务代码无法触发该回调。
-
-(2) addXXX/removeXXX onXXX
-
-addXXX与removeXXX成对使用,addXXX用于注册回调,其参数为class对象, 将需要注册的回调函数放于class中,其写法为onXXX,class中可以有多个onXXX回调函数;removeXXX用于注销回调,其参数为class对象,用于注销addXXX注册的回调。如:
-
-```
-export class NodeISayHello
-{
- ...
- // 注册object回调
- addSayHelloListener(listener: NodeISayHelloListener);
- // 注销object回调
- removeSayHelloListener(listener: NodeISayHelloListener);
- ...
-}
-...
-export class NodeISayHelloListener
-{ // 定义回调
- onSayHelloStart(info: SayInfo);
- onSayHelloEnd(info: SayInfo);
-}
-```
-
-其中注册/注销的回调方法为onSayHelloStart(info: SayInfo); onSayHelloEnd(info: SayInfo); 注册回调之后,工具会生成两个回调接口供用户调用,业务代码中用户自行定义回调时机进而通过回调接口调用回调,若回调被注销,则业务代码无法触发回调。
-
-2.自动配置业务代码用例使用的cfg.json
-
- [配置文件cfg.json用例](https://gitee.com/openharmony/napi_generator/blob/master/examples/cfg.json)
-
-3.自动配置业务代码使用的业务代码用例
-
-业务代码用例如下:
-
-serviceCode/NodeISayHello.h
-
-[NodeISayHello.h](https://gitee.com/openharmony/napi_generator/blob/master/examples/serviceCode/NodeISayHello.h)
-
-serviceCode/NodeISayHello.cpp
-
-[NodeISayHello.cpp](https://gitee.com/openharmony/napi_generator/blob/master/examples/serviceCode/NodeISayHello.cpp)
-
-### 可执行程序使用方法
-
-#### Linux
-
-1.将待转换的.d.ts文件、napi_generator-linux、依赖文件basic.d.ts、 配置文件cfg.json、业务代码文件夹serviceCode(其中serviceCode目录下放置业务代码的.h文件和.cpp文件)放在同级目录下。此处新建generatorCode文件夹,用于存放生成框架代码。整体目录文件如下:
-
- OpenHarmony@Ubuntu-64:~/service$ ls
- napi_generator-linux @ohos.napitest.d.ts basic.d.ts generatorCode cfg.json serviceCode
-
-2.在终端中进入到之前可执行程序napi_generator-linux所在的目录,并运行napi_generator-linux,命令如下:
-
- OpenHarmony@Ubuntu-64:~/service$ ./napi_generator-linux -f @ohos.napitest.d.ts -o generatorCode -i false -n int -s cfg.json
-
-其中,参数详情如下:
-
- -f, 待转换的.d.ts文件,若同时转换多个文件,文件之间用“,”隔开;
-
- -d, 根据指定路径转换该文件夹中所有.d.ts文件;
-
- -i, 可选参数,默认false,待转换.d.ts文件中引用非basic.d.ts的ts文件时打开开关;
-
- -o, 可选参数,默认为当前目录,指定生成框架代码输出路径;
-
- -n, 可选参数,默认为uint32_t,指定生成框架代码中number类型全部为指定类型;
-
- -s, 可选参数,默认为不配置业务代码,指定生成框架代码的业务配置文件,用于粘合工具代码和业务代码的配置。
-
- 备注1:-f与-d两个参数只选其中一个参数即可。
-
- 备注2:若.d.ts文件中声明了basic.d.ts文件,将basic.d.ts文件放置在待转换.d.ts文件同一级目录;若除此之外还声明其它.d.ts文件,将此类文件放置在待转换.d.ts文件同级目录。
-
-其中,cfg.json内容如下:
-
-```
-[
- {
- "genPath": "/home/kaihong1/napi/myCommitNapiTest/generatorCode",
- "includeName": "../serviceCode/NodeISayHello.h",
- "cppName": "../serviceCode/NodeISayHello.cpp",
- "interfaceName": "funcTest",
- "serviceCode": "out = napitest::funcTest(v);"
- "description": "includeName: 引入的业务代码.h文件相对路径, cppName: 引入的业务代码.cpp文件相对路径, interfaceName: ts文件中的使用接口名,业务代码就在该接口中调用;格式为:类名::方法名(如: TestClass::funcTest1),若无类名,则格式为:方法名(如: funcTest), serviceCode: 在接口中调用业务代码的调用语句。(该属性只做注释使用)"
- }
-]
-```
-
-cfg.json是一个数组,每一项配置对应一个方法的调用,需要对多少方法进行调用就配置多少项;其中
-
-"genPath": 生成框架代码路径,用户的业务代码相对于该路径配置,如:"/home/kaihong1/napi/myCommitNapiTest/generatorCode"
-
-"includeName": 引入的业务代码.h文件相对路径, 如:"../serviceCode/NodeISayHello.h",
-
-"cppName": 引入的业务代码.cpp文件相对路径, 如:"../serviceCode/NodeISayHello.cpp",
-
-"interfaceName": ts文件中的使用接口名,业务代码就在该接口中调用;格式为:类名::方法名(如: TestClass::funcTest1),若无类名,则格式为:方法名(如: funcTest),
-
-"serviceCode": 在接口中调用业务代码的调用语句。此处调用的是实现该接口的业务代码, 如:"out = napitest::funcTest(v);",
-
-"description": 仅作为cfg.json文件中描述其它字段含义的属性,用户配置时,可以不用填写这个字段
-
-3.运行成功后会在generatorCode目录下生成框架代码文件,如下所示:
-
- OpenHarmony@Ubuntu-64:~/linshi/napi_generator_8/examples/ts/generatorCode$ ls
- binding.gyp BUILD.gn napi_gen.log napitest.cpp napitest.h napitest_middle.h napitest_middle.cpp test.sh tool_utility.cpp tool_utility.h
-
-#### Windows
-
-1.将待转换的.d.ts文件、napi_generator-win.exe、 配置文件cfg.json、依赖文件basic.d.ts、业务代码文件夹serviceCode(其中serviceCode目录下放置业务代码的.h文件和.cpp文件)放在同级目录下。此处新建generatorCode文件夹,用于存放生成框架代码。整体目录文件如下:
-
- E:\demo\napi>dir /B
- @ohos.napitest.d.ts
- basic.d.ts
- napi_generator-win.exe
- generatorCode
- cfg.json
- serviceCode
-
-2.在终端中进入到之前可执行程序napi_generator-win.exe所在的目录,并运行napi_generator-win.exe,命令如下:
-
- E:\demo\napi>napi_generator-win.exe -f @ohos.napitest.d.ts -o generatorCode -i false -n double -s cfg.json
-
-其中,参数详情如下:
-
- -f, 待转换的.d.ts文件,若同时转换多个文件,文件之间用“,”隔开;
-
- -d, 根据指定路径转换该文件夹中所有.d.ts文件;
-
- -i, 可选参数,默认false,待转换.d.ts文件中引用非basic.d.ts的ts文件时打开开关;
-
- -o, 可选参数,默认为当前目录,指定生成框架代码输出路径;
-
- -n, 可选参数,默认为uint32_t,指定生成框架代码中number类型全部为指定类型;
-
- -s, 可选参数,默认为不配置业务代码,指定生成框架代码的业务配置文件,用于粘合工具代码和业务代码的配置。
-
- 备注1:-f与-d两个参数只选其中一个参数即可。
-
- 备注2:若.d.ts文件中声明了basic.d.ts文件,将basic.d.ts文件放置在待转换.d.ts文件同一级目录;若除此之外还声明其它.d.ts文件,将此类文件放置在待转换.d.ts文件同级目录。
-
-其中,cfg.json内容如下:
-
-```
-[
- {
- "genPath": "E:\\napi_aboutTest\\testcase_napi_intellijPlugin\\generatorCode",
- "includeName": "../serviceCode/NodeISayHello.h",
- "cppName": "../serviceCode/NodeISayHello.cpp",
- "interfaceName": "funcTest",
- "serviceCode": "out = napitest::funcTest(v);"
- "description": "includeName: 引入的业务代码.h文件相对路径, cppName: 引入的业务代码.cpp文件相对路径, interfaceName: ts文件中的使用接口名,业务代码就在该接口中调用;格式为:类名::方法名(如: TestClass::funcTest1),若无类名,则格式为:方法名(如: funcTest), serviceCode: 在接口中调用业务代码的调用语句。(该属性只做注释使用)"
- }
-]
-```
-
-cfg.json是一个数组,每一项配置对应一个方法的调用,需要对多少方法进行调用就配置多少项;其中
-
-"genPath": 生成框架代码路径,用户的业务代码相对于该路径配置,如:"E:\\napi_aboutTest\\testcase_napi_intellijPlugin\\generatorCode"
-
-"includeName": 引入的业务代码.h文件相对路径, 如:"../serviceCode/NodeISayHello.h",
-
-"cppName": 引入的业务代码.cpp文件相对路径, 如:"../serviceCode/NodeISayHello.cpp",
-
-"interfaceName": ts文件中的使用接口名,业务代码就在该接口中调用;格式为:类名::方法名(如: TestClass::funcTest1),若无类名,则格式为:方法名(如: funcTest),
-
-"serviceCode": 在接口中调用业务代码的调用语句。此处调用的是实现该接口的业务代码, 如:"out = napitest::funcTest(v);",
-
-"description": 仅作为cfg.json文件中描述其它字段含义的属性,用户配置时,可以不用填写这个字段
-
-3.运行成功后会在generatorCode目录下生成框架代码文件,如下所示:
-
- E:\demo\napi\generatorCode>dir /B
- binding.gyp
- BUILD.gn
- napitest.cpp
- napitest.h
- napitest_middle.h
- napitest_middle.cpp
- napi_gen.log
- test.sh
- tool_utility.cpp
- tool_utility.h
-
-#### Mac
-
-方法步骤参考windows、Linux的使用方法。
-
-### 不配置cfg.json文件生成框架代码
-
-若用户想手动配置业务代码,可不配置cfg.json文件生成框架代码之后手动增加业务代码,不配置cfg.json文件生成框架代码说明如下:
-
-[不配置cfg.json生成框架代码说明](https://gitee.com/openharmony/napi_generator/blob/master/docs/guide/ADD_SERVICECODE_INSTRUCTION.md)
-
-### VS Code插件使用方法
-
-具体的插件使用步骤,可以左键单击以下链接了解:
-
-[VS插件使用说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_vs_plugin/docs/napi/INSTRUCTION_ZH.md)
-
-### DevEco Studio上使用的IntelliJ插件使用方法
-
-具体的插件使用步骤,可以左键单击以下链接了解:
-
-[DevEco Studio上使用的IntelliJ插件使用说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_IntelliJ_plugin/docs/napi/INSTRUCTION_ZH.md)
-
-## 集成测试
-NAPI框架代码生成后,系统框架开发者进行二次开发后,即可集成到OpenHarmony编译系统,生成对应的库文件,供应用开发者调用接口。工具集成测试的具体操作步骤可以左键单击以下链接了解:
-
- [工具集成测试](https://gitee.com/openharmony/napi_generator/blob/master/docs/guide/INTEGRATION_TESTING_ZH.md)
-
diff --git a/docs/guide/INTEGRATION_TESTING_ZH.md b/docs/guide/INTEGRATION_TESTING_ZH.md
deleted file mode 100644
index 30ceca01b4902158522d9c81f2c669079792dbd6..0000000000000000000000000000000000000000
--- a/docs/guide/INTEGRATION_TESTING_ZH.md
+++ /dev/null
@@ -1,274 +0,0 @@
-# NAPI框架生成工具集成测试
-
-## 简介
- 本文主要介绍如何将NAPI框架生成代码集成到OpenHarmony系统,进而进行集成测试。
-
-## 准备
-
- 1.硬件:rk3568开发套件。
-
- 2.系统镜像:
-
- 系统镜像的具体生成方法,可以左键单击以下链接了解:
-
- [生成代码集成到OpenHarmony](https://gitee.com/openharmony/napi_generator/blob/master/docs/guide/ENSEMBLE_METHOD_ZH.md)
-
- 3.应用hap包:hap包及源码路径如下:
-
-```
-napi_generator/examples/app
-```
-
- hap包的具体生成方法,可参考OpenHarmony/docs/zh-cn/application-dev文档中使用ArkTS语言开发(Stage模型)。
-### 修改点1:扩展SDK接口
-1. 查看SDK目录:打开DevEco Studio ,点击 Tools -> SDK Manager -> SDK
-
- 
-
-2. 将@ohos.napitest.d.ts文件拷贝到应用所使用的sdk目录下 的ets\api
-
- 
-
-### 修改点2:增加新接口调用
-其中修改index.ets文件内容如下:
-
-[Index.ets](https://gitee.com/openharmony/napi_generator/blob/master/examples/Index.ets)
-
-关键代码说明:
-
-1.定义回调:
-
-1.1 定义object回调
-
-```
-class NodeISayHelloListenerImpl {
- onSayHelloStart(info: object) {
- console.log('napiTestDemo ----onSayHelloStart', info);
- AppStorage.SetOrCreate("textInfoStart", JSON.stringify(info))
- }
- onSayHelloEnd(info: object) {
- console.log('napiTestDemo ----onSayHelloEnd.', info);
- AppStorage.SetOrCreate("textInfoEnd", JSON.stringify(info))
- }
-}
-let listener: NodeISayHelloListenerImpl = new NodeISayHelloListenerImpl()
-```
-
-1.2 定义register注册的回调
-
-```
-function onCallbackfunnm(wid: number) {
- AppStorage.SetOrCreate("callBackNum", JSON.stringify(wid))
- console.info("wid = " + wid)
- return "ocCallbackfuncnm";
-}
-```
-
-2.注册回调:
-
-2.1 addXXX注册object回调
-
-```
-ns.addSayHelloListener(listener);
-```
-
-2.2 registerXXX注册回调
-
-```
-ns.registerCallbackfunc(onCallbackfunnm);
-```
-
-3.调用回调:
-
-3.1 调用sayHello普通函数,该函数业务实现会调用注册的object回调
-
-```
-ns.sayHello("js1", "native1", napitest.SayType.kInitiative);
-```
-
-调用成功后,打印传入的参数
-
-```
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:37] NAPITEST_LOGI sayHello from = js1
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:38] NAPITEST_LOGI sayHello to = native1
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:39] NAPITEST_LOGI sayHello sayType = 0
-```
-
-js层打印回调数据
-
-```
-A03d00/JSAPP: napiTestDemo ----onSayHelloStart {"from":"js1","fromId":992,"to":"native1","toId":1014,"content":"hello1","saidTime":"123456789","isEnd":false}
-...
-A03d00/JSAPP: napiTestDemo ----onSayHelloEnd. {"from":"native","fromId":101,"to":"js","toId":99,"content":"hello","saidTime":"987654321","isEnd":true}
-```
-
-3.2 调用sayHi普通函数,该函数业务实现会调用register注册的object回调
-
-```
-ns.sayHi("js3", "native3", napitest.SayType.kResponse);
-```
-
-调用成功后,打印传入的参数
-
-```
-I C02e00/NAPITESTNAPILayer: sayHi:81 NAPITEST_LOGI sayHi from = js3
-I C02e00/NAPITESTNAPILayer: sayHi:82 NAPITEST_LOGI sayHi to = native3
-I C02e00/NAPITESTNAPILayer: sayHi:83 NAPITEST_LOGI sayHi sayType = 1
-```
-
-js层打印回到数据
-
-```
-I A03d00/JSAPP: napiTestDemo ----onCallbackfunnm wid = 50
-```
-
-4.注销回调:
-
-4.1 removeXXX注销object回调
-
-```
-ns.removeSayHelloListener(listener);
-```
-
-注销回调后再次调用sayHello方法,js层将无法再打印出回调数据
-
-```
-ns.sayHello("js2", "native2", napitest.SayType.kInitiative);
-```
-
-4.2 unRegisterXXX注销回调
-
-```
-ns.unRegisterCallbackfunc(onCallbackfunnm);
-```
-
-注销回调后再次调用sayHi方法,js层将无法再打印出回调数据
-
-```
-ns.sayHi("js4", "native4", napitest.SayType.kResponse);
-```
-
-5.调用Promise回调
-
-```
- await ns.sayHelloWithResponse("response from", "response to", napitest.SayType.kResponse).then((ret: object) => {
- this.promiseRes = JSON.stringify(ret);
- console.info("napiTestDemo ----sayHelloWithResponse ret = " + JSON.stringify(ret));
- });
-```
-
-调用成功后,打印传入的参数
-
-```
-I C02e00/NAPITESTNAPILayer: sayHelloWithResponse:107 NAPITEST_LOGI sayHelloWithResponse from = response from
-I C02e00/NAPITESTNAPILayer: sayHelloWithResponse:108 NAPITEST_LOGI sayHelloWithResponse to = response to
-I C02e00/NAPITESTNAPILayer: sayHelloWithResponse:109 NAPITEST_LOGI sayHelloWithResponse sayType = 1
-```
-
-js层打印promise回调数据
-
-```
-I A03d00/JSAPP: napiTestDemo ----sayHelloWithResponse ret = {"result":0,"errMsg":"","response":""}
-```
-
-6.调用普通方法funcTest
-
-```
-this.returnVal = napitest.funcTest(false);
-console.info("napiTestDemo ----funcTest returnVal = " + this.returnVal)
-```
-
-调用成功后,在js层打印返回值
-
-```
-I A03d00/JSAPP: napiTestDemo ----funcTest returnVal = "ret is false"
-```
-
-7.Text打印数据说明
-
-
-```
-// 调用sayHelloWithResponse后保存promise回调数据
-Text('promise回调: promiseResult = ' + this.promiseRes).margin({ top: 10 })
-// 调用sayHello方法后保留addXXX注册的回调方法数据
-Text('sayHelloStart回调: info = ' + this.textInfoStart).margin({ top: 10 })
-Text('sayHelloEnd回调: info = ' + this.textInfoEnd).margin({ top: 10 })
-// 调用sayHi方法后保留registerXXX注册的回调方法数据
-Text('register注册的回调: wid = ' + this.callBackNum).margin({ top: 10 })
-// 调用fucnTest方法后保存返回值
-Text('普通方法funcTest返回值: returnVal = ' + this.returnVal).margin({ top: 10 })
-```
-
-## 使用说明
-
-步骤一:安装镜像环境:将out/rk3568/packages/phone目录下的images镜像文件下载并烧录到开发板上。
-
- OpenHarmony@Ubuntu-64:~/OpenHarmony/out/rk3568/packages/phone/images$ ll
- total 767452
- drwxrwxrwx 2 root root 4096 Nov 21 05:32 ./
- drwxrwxrwx 15 root root 4096 Nov 21 05:32 ../
- -rwxrwxrwx 1 root root 67108864 Nov 21 05:04 boot_linux.img*
- -rw-r--r-- 1 root root 52428800 Nov 21 05:32 chip_prod.img
- -rwxrwxrwx 1 root root 8569 Nov 21 05:04 config.cfg*
- -rw-r--r-- 1 root root 12582912 Nov 21 05:32 eng_system.img
- -rwxrwxrwx 1 root root 455104 Nov 21 05:04 MiniLoaderAll.bin*
- -rwxrwxrwx 1 root root 756 Nov 21 05:04 parameter.txt*
- -rw-rw-r-- 1 root root 2507625 Nov 21 05:32 ramdisk.img
- -rwxrwxrwx 1 root root 5639680 Nov 21 05:04 resource.img*
- -rw-r--r-- 1 root root 52428800 Nov 21 05:32 sys_prod.img
- -rw-r--r-- 1 root root 1610608640 Nov 21 05:32 system.img
- -rwxrwxrwx 1 root root 4194304 Nov 21 05:04 uboot.img*
- -rw-rw-r-- 1 root root 15806303 Nov 21 05:32 updater.img
- -rw-r--r-- 1 root root 1468006400 Nov 21 05:32 userdata.img
- -rw-r--r-- 1 root root 268431360 Nov 21 05:32 vendor.img
-
-步骤二:安装hap包。
-
- Build Haps通过后,通过Run按钮将hap包安装到板子上。
-
- 执行完成后,设备中会出现安装的APP。
-
-步骤三:打印日志并验证结果。
-
- hap包安装成功后,进入hdc shell
-
- 首先执行以下命令关闭hilog隐私权限
-
-```
-hilog -p off
-```
-
- 输入命令实时打印日志并输出至windows中。
-
- .\hdc.exe hilog > log.txt
-
- 然后单击设备中安装的APP,进入APP后单击测试按钮,执行完成后会在hdc安装目录下出现log.txt文件。
-
-## 查看结果
-
- log.txt中包含"NAPITEST_LOGI..."相关日志即为接口调用成功,如:
-
-```
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:37] NAPITEST_LOGI sayHello from = js1
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:38] NAPITEST_LOGI sayHello to = native1
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:39] NAPITEST_LOGI sayHello sayType = 0
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:64] NAPITEST_LOGI NodeISayHelloListener_onSayHelloStartCallback begin
-I C02e00/NAPITESTNAPILayer: [NodeISayHello.cpp:66] NAPITEST_LOGI NodeISayHelloListener_onSayHelloStartCallback end
-...
-```
-
-点击“注册object回调后SayHello调用回调”按钮,sayHelloStart回调info和sayHelloEnd回调info会显示出C++传到js层的回调数据;
-
-点击“注销object回调后SayHello调用回调”按钮,sayHelloStart回调info和sayHelloEnd回调info会显示出数据为空,即该回调已注销,C++无法调用回调,显示的为应用赋的空值;
-
-点击“Promise 回调”按钮,Promise回调的errMsg, result, response会出现C++传到js层的回调数据;
-
-点击“register回调后SayHi调用回调”按钮,register注册的回调会显示出wid = 50, wid值为C++传到js的回调数据;
-
-点击“unRegister回调后SayHi调用回调”按钮,register注册的回调会显示出wid 为空,即该回调已注销,C++无法调用回调,显示的为应用赋的空值;
-
-点击”调用funcTest方法“按钮,普通方法funcTest返回值显示出 returnVal = ret is false。
-
-## 相关仓
-
-暂无
diff --git a/docs/guide/ROADMAP_ZH.md b/docs/guide/ROADMAP_ZH.md
deleted file mode 100644
index ad7fcddc6e4950cd349fd26e275e9bc0a9643993..0000000000000000000000000000000000000000
--- a/docs/guide/ROADMAP_ZH.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# NAPI框架代码生成工具
-
-## 版本规划
-
-2024.03.30提供1.4.1版本 基本完善工具C++支持能力,具体特性见表1。
-
-**表 1** 2024.03.30待支持特性
-
-
-
-
类别
- |
-待开发特性
- |
-
-
-变量/返回值
- |
-- 支持ts接口文件中namespace域的any类型之复合类型变量转换为对应C++类型变量
- 支持ts接口文件中namespace域的多中类型合并成新类型之复合类型的变量转换为对应C++类型变量
- |
-
-函数
- |
-- 支持箭头函数的参数是回调函数
- 支持on/off第二个参数为object
- 支持class中有参构造中有枚举类型
- 箭头回调支持异步调用
- on注册回调的箭头函数支持携带js返回值给C++
- 支持js业务代码回调接口中的回调js函数
- class2声明在class1之后时,支持class1中的有参构造的参数有class2
- |
-
文件
- |
-- 优化VSCode插件用户界面
- 分离生成的工具代码普通方法和回调方法,防止嵌套使用头文件
- |
-
-
-可维护性
- |
-
- |
-
-
-
-
-
-
-## 相关链接
-
-无
diff --git a/docs/guide/SOLUTION.md b/docs/guide/SOLUTION.md
deleted file mode 100644
index 094bad65c9a978fc9c1e6af859cc02dcb735d3f8..0000000000000000000000000000000000000000
--- a/docs/guide/SOLUTION.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# 当前已知不支持推荐方案
-
-1.注册的object回调不支持箭头函数写法, 注册回调格式为addXXX,注销回调格式为removeXXX,且回调方法命名格式为onXXX, 例如:
-
-```
-export interface InterfaceB {
- byClass: (listener: InterfaceA) => void;
-}
-export interface InterfaceA {
- callFunction: (res: number) => void;
-}
-```
-
-修改为:
-
-```
-export interface InterfaceB {
- // object注册回调, 关键字:add
- addByClass(listener: InterfaceA);
- // object注销回调, 关键字:remove
- removeByClass(listener: InterfaceA);
-}
-export interface InterfaceA {
- onCallFunction(res: number): void;
-}
-```
-
-2.注册回调只能支持单个参数, 且注册单个参数的注册回调方法命名格式为registerXXX, 例如:
-
-```
-export interface TestA {
- bGyClass: (a: number, callback: (result: number) => void) => number;
-}
-```
-
-修改为:
-
-```
-export interface TestA {
- // 原bGyClass的参数 callback: (res: number) => void 改为registerXXX/unRegisterXXX形式
- // register形式注册回调, 关键字:register
- registerTestACallback(callback: (dd: number) => void);
- // unRegister形式注销回调, 关键字:unRegister
- unRegisterTestACallback(callback: (dd: number) => void);
- // gByClass用于调用回调
- bGyClass: (a: number) => number;
-}
-```
-
-3.生成报错:The current version does not support generating parameter。
-
-```
-genError:at paramGenerate [C:\snapshot\napi_generator\src\gen\generate\param_generate.js(899:17)] The current version does not support generating parameter [elementName] with type [ElementName]
-```
-
-ts文件为:
-
-```
-import { ElementName } from './bundleManager/ElementName';
-
-declare namespace cardEmulation {
- export class HceService {
- start(elementName: ElementName, aidList: string[]): void;
- stop(elementName: ElementName): void;
- }
-}
-export default cardEmulation;
-```
-
-修改:
-
-文件中引用了 ElementName 类型, 需要把被引用的文件( import { ElementName } from './bundleManager/ElementName'; )放到转换路径下工具才可进行转换
\ No newline at end of file
diff --git a/docs/guide/ts/DEVELOP_ZH.md b/docs/guide/ts/DEVELOP_ZH.md
deleted file mode 100644
index ed7fef53e7aca09236be90d8fabe981f3e8255f8..0000000000000000000000000000000000000000
--- a/docs/guide/ts/DEVELOP_ZH.md
+++ /dev/null
@@ -1,139 +0,0 @@
-# TS接口文件生成工具开发说明
-
-## 工具代码框架介绍
-
-ts工具框架由C++语法解释器和代码生成器两部分组成。C++语法解释器解析用户输入的.h文件内容,通过C++语法解析,将文件内容分解为类、方法、入参、成员属性等元素;代码生成器根据从语法解析器得到的这些元素,转换为对应的typescript语法的接口、方法、参数代码,生成.ts文件。
-
-## 工具开发
-
-### 可执行文件编译说明
-
-#### 环境说明
-
-系统:建议Ubuntu 20.04或者Windows 10
-
-#### 开发步骤
-
-##### Linux
-
-**1.生成napi_generator程序**
-
-1.1 安装typescript:在napi_generator/src目录下执行命令:
-
- npm i typescript
-
-1.2 安装stdio:在napi_generator目录下执行命令:
-
- npm i stdio
-
-1.3 安装pkg : 在napi_generator目录下执行命令:
-
- sudo npm i -g pkg
-
-1.4 打包三个版本 : 执行命令:
-
- pkg .
-
-执行以上步骤后,即可在napi_generator目录下生成Windows、linux、mac系统下的可执行程序:
-
- napi_generator-win.exe、napi_generator-linux、napi_generator-macos
-
-1.4.1 (可选步骤) 根据需求打包指定系统下的可执行文件。若想只打包windows系统下可执行文件,可执行命令:
-
- pkg -t node14-win . -o napi_generator-win.exe
-
-若想只打包linux系统下可执行文件,可执行命令:
-
- pkg -t node14-linux . -o napi_generator-linux
-
-若想只打包macos系统下可执行文件,可执行命令:
-
- pkg -t node14-macos . -o napi_generator-macos
-
-备注:参数-t为指定系统,参数-o为指定可执行文件名称。
-
-**2 生成header_parser程序**
-
-2.1 安装python库 CppHeaderParser,在header_parser/src_code中下载CppHeaderParser.zip,解压后替换本地Python文件夹中CppHeaderParser(如 /usr/local/lib/python3.8/dist-packages/CppHeaderParser)目录下的全部文件
-
-[下载链接1](http://ftpkaihongdigi.i234.me:5000/sharing/kBG1c7CvT)
-
-[下载链接2](http://ftp.kaihong.com:5000/sharing/kBG1c7CvT)
-
-[下载链接3](http://ftp.kaihongdigi.com:5000/sharing/kBG1c7CvT)
-
-2.2 安装 pyinstaller
-
- sudo pip install pyinstaller
-
-2.3 将python脚本打包成独立可执行文件
-进入 napi_generator/src/tsGen 目录后执行如下命令:
-
- sudo pyinstaller -F header_parser.py
-
-打包后的可执行文件在dist目录中
-./src/tsGen/dist/header_parser
-
-##### Windows
-
-**1.生成napi_generator程序**
-
-1.1 安装typescript:使用管理员身份在napi_generator/src目录下执行命令:
-
- npm i typescript
-
-1.2 安装stdio:使用管理员身份在napi_generator目录下执行命令:
-
- npm i stdio
-
-1.3 安装pkg : 使用管理员身份在napi_generator目录下执行命令:
-
- npm i -g pkg
-
-1.4 打包三个版本 : 使用管理员身份执行命令:
-
- pkg .
-
-执行以上步骤后,即可在napi_generator目录下生成Windows、linux、mac系统下的可执行程序:
-
- napi_generator-win.exe、napi_generator-linux、napi_generator-macos
-
-1.4.1(可选步骤)根据需求打包指定系统下的可执行文件。若想只打包windows系统下可执行文件,可执行命令:
-
- pkg -t node14-win . -o napi_generator-win.exe
-
-若想只打包linux系统下可执行文件,可执行命令:
-
- pkg -t node14-linux . -o napi_generator-linux
-
-若想只打包macos系统下可执行文件,可执行命令:
-
- pkg -t node14-macos . -o napi_generator-macos
-
-**2.生成header_parser程序**
-
-2.1 安装python库 CppHeaderParser,在header_parser/src_code中下载CppHeaderParser.zip,解压后替换本地Python文件夹中CppHeaderParser(如 C:\Python310\Lib\site-packages\CppHeaderParser)目录下的全部文件
-
-[下载链接1](http://ftpkaihongdigi.i234.me:5000/sharing/kBG1c7CvT)
-
-[下载链接2](http://ftp.kaihong.com:5000/sharing/kBG1c7CvT)
-
-[下载链接3](http://ftp.kaihongdigi.com:5000/sharing/kBG1c7CvT)
-
-2.2 安装 pyinstaller
-
- pip install pyinstaller
-
-2.3 将python脚本打包成独立可执行文件
-进入 napi_generator/src/tsGen 目录后执行如下命令:
-
- pyinstaller -F header_parser.py
-
-打包后的可执行文件header_parser.exe在dist目录中
-./src/tsGen/dist/header_parser.exe
-
-### IntelliJ 插件开发说明
-
-具体的插件开发步骤,可以左键单击以下链接了解:
-
-[IntelliJ插件开发说明](https://gitee.com/openharmony/napi_generator/blob/master/hdc/ts/ts_IntelliJ_plugin/docs/DEVELOP_ZH.md)
\ No newline at end of file
diff --git a/docs/guide/ts/FAQ.md b/docs/guide/ts/FAQ.md
deleted file mode 100644
index b1ddc8115b8cf0e2ed704c4c9927c47083758e54..0000000000000000000000000000000000000000
--- a/docs/guide/ts/FAQ.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Ts接口生成工具 问题反馈
-
-## 问题反馈
-
-1、使用工具转换.h文件时报错,显示header_parser.exe文件有误。
-
-
-
-问题定位:使用可执行程序转换.h文件时,当前路径下没有header_parser.exe文件,导致转换失败。
-
-问题解决:下载header_parser.exe文件,并放置在napi_generator-win.exe、待转换.h文件相同路径下,即可解解决以上问题。
-
diff --git a/docs/guide/ts/INSTRUCTION_ZH.md b/docs/guide/ts/INSTRUCTION_ZH.md
deleted file mode 100644
index 759479d84e0ffa1f63c1bb55879a12c555ee6197..0000000000000000000000000000000000000000
--- a/docs/guide/ts/INSTRUCTION_ZH.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Ts接口生成工具使用说明
-## 简介
-
-Ts接口生成工具支持两种入口,分别是可执行程序、IntelliJ插件,使用者可以根据自己的需要选择合适的工具。可执行文件、IntelliJ插件下载路径如下。
-
-[下载链接1](http://ftpkaihongdigi.i234.me:5000/sharing/kBG1c7CvT)
-
-[下载链接2](http://ftp.kaihong.com:5000/sharing/kBG1c7CvT)
-
-[下载链接3](http://ftp.kaihongdigi.com:5000/sharing/kBG1c7CvT)
-
-下载文件说明如下:
-
- │ │ |── generator.jar # IntelliJ插件
- │ │ |── header_parser
- │ │ |── |── linux
- │ │ |── |── |── header_parser # Linux下python脚本可执行程序
- │ │ |── |── windows
- │ │ |── |── |── header_parser.exe # Windows下python脚本可执行程序
- │ │ |── |── src_code
- │ │ |── |── |── CppHeaderParser.zip # CppHeaderParser源码
- │ │ |── |── readme.txt # readme.txt
- │ │ |── napi_generator-linux # Linux可执行程序
- │ │ |── napi_generator-win.exe # Windows可执行程序
- │ │ └── napi_generator-macos # Mac可执行程序
-
-## 工具介绍
-
-通过Ts接口生成工具,使用者可以将已有的.h接口文件生成ts文件,进而将生成的ts文件作为NAPI框架生成代码工具的输入,生成NAPI框架代码,达到工具链的效果。工具的软件架构如下:
-
-
-
-
-## 使用方法
-
-### 可执行程序使用方法
-
-#### Linux
-
-1.将待转换的.h文件、napi_generator-linux、header_parser放在同级目录下,此处新建out文件夹,用于存放生成.d.ts文件。整体目录文件如下:
-
- harmony@Ubuntu-64:~/service/linshi$ ls
- baseapi.h header_parser napi_generator-linux out
-
-2.在终端中进入到之前可执行程序napi_generator-linux所在的目录,并运行napi_generator-linux,命令如下:
-
- harmony@Ubuntu-64:~/service/linshi$ ./napi_generator-linux -f baseapi.h -t true -o out
-
-其中,参数详情如下:
- -f, 待转换的.h文件,若同时转换多个文件,文件之间用“,”隔开;
- -d, 根据指定路径转换该文件夹中所有.h文件;
- -t, 区分ts生成与napi转换工具,值为true时表示ts生成,false表示napi转换,默认为false;
- -o, 可选参数,默认为当前目录,指定生成框架代码输出路径。
-
- 备注:-f与-d两个参数只选其中一个参数即可。
-
-3.运行成功后会在out目录下生成.d.ts文件,如下所示:
-
- harmony@Ubuntu-64:~/linshi/napi_generator_8/examples/ts/out$ ls
- napi_gen.log baseapi.d.ts
-
-#### Windows
-
-1.将待转换的.h文件、napi_generator-win.exe、header_parser.exe放在同级目录下,此处新建out文件夹,用于存放生成.d.ts文件。整体目录文件如下:
-
- E:\demo\napi>dir /B
- baseapi.h
- header_parser.exe
- napi_generator-win.exe
- out
-
-2.在终端中进入到之前可执行程序napi_generator-win.exe所在的目录,并运行napi_generator-win.exe,命令如下:
-
- E:\demo\napi>napi_generator-win.exe -f baseapi.h -t true -o out
-
-其中,参数详情如下:
- -f, 待转换的.h文件,若同时转换多个文件,文件之间用“,”隔开;
- -d, 根据指定路径转换该文件夹中所有.h文件;
- -t, 区分ts生成与napi转换工具,值为true时表示ts生成,false表示napi转换,默认为false;
- -o, 可选参数,默认为当前目录,指定生成框架代码输出路径。
-
- 备注:-f与-d两个参数只选其中一个参数即可。
-
-3.运行成功后会在out目录下生成.d.ts文件,如下所示:
-
- E:\demo\napi\out>dir /B
- napi_gen.log
- baseapi.d.ts
-
-#### Mac
-
-方法步骤参考windows、Linux的使用方法。
-
-### IntelliJ插件使用方法
-
-具体的插件使用步骤,可以左键单击以下链接了解:
-
-[IntelliJ插件使用说明](https://gitee.com/openharmony/napi_generator/tree/master/hdc/ts/ts_IntelliJ_plugin/docs/INSTRUCTION_ZH.md)
diff --git a/docs/guide/ts/ROADMAP_ZH.md b/docs/guide/ts/ROADMAP_ZH.md
deleted file mode 100644
index b31531a52a463fa12c2db268e04d129f63ad60dd..0000000000000000000000000000000000000000
--- a/docs/guide/ts/ROADMAP_ZH.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# TS接口文件生成工具
-
-## 版本规划
-
-2023.08.30提供1.1版本 基本完善工具C++支持能力,具体特性见表1。
-
-**表 1** 2023.08.30待支持特性
-
-
-
-类别
- |
-待开发特性
- |
-入口平台
- |
-
-
-变量/返回值
- |
-- 支持C++语言中enum复合类型变量/函数入参自动转换为对应TS接口中的变量/函数
- 支持C++语言中std::map转换为对应TS接口中的Map<>
- 支持C++语言中std::any转换为对应TS接口中的any
- 支持C++语言中namespace域嵌套namespace转换为对应TS接口中的实现
- 支持C++语言数组类型为using定义的NUMBER_TYPE类型转换为对应TS接口中的变量
- |
-- 可执行文件-Windows/Ubuntu/Mac
- IntelliJ插件-Windows
- VSCode插件-Windows/Ubuntu/Mac
- |
-
-namespace
- |
-- 支持.h文件中namespace域class继承转换为对应TS文件中继承的class
- |
-- 可执行文件-Windows/Ubuntu/Mac
- IntelliJ插件-Windows
- VSCode插件-Windows/Ubuntu/Mac
- |
-
-
-
-
-
-
-## 相关链接
-
-无
-
diff --git a/docs/guide/ts/ts_Gen-1.0.md b/docs/guide/ts/ts_Gen-1.0.md
deleted file mode 100644
index decb5880cf9cc1b7302e0163776f99f0a8607b5c..0000000000000000000000000000000000000000
--- a/docs/guide/ts/ts_Gen-1.0.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# ts_Gen-1.0(2023-01-30)
-
-## 版本概述
-
-发布ts_Gen-1.0。
-
-## 版本特性
-
-**表 1** 已支持特性
-
-
-
-类别
- |
-支持特性
- |
-入口平台
- |
-
-
-变量/返回值
- |
-- 支持C++语言中string、std::string、char、wchar_t、char16_t、char32_t、short、int、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t、double_t、float_t、size_t、long、long long、float、double、long double、bool基础类型的变量/函数入参自动转换为对应TS接口中变量/入参
- 支持C++语言中string、std::string、char、wchar_t、char16_t、char32_t、short、int、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t、double_t、float_t、size_t、long、long long、float、double、long double、bool数组类型的变量/函数入参自动转换为对应TS接口中变量/入参,数组书写方式为std::vector<>
- 支持C++语言string、std::string、char、wchar_t、char16_t、char32_t、short、int、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t、double_t、float_t、size_t、long、long long、float、double、long double、bool基础类型的返回值自动转换为对应TS接口中返回值
- |
-- 可执行文件-Windows/Ubuntu/Mac
- IntelliJ插件-Windows
- |
-
-函数类型
- |
-- 支持ts接口文件中namespace域的static函数自动转换为对应TS接口中的函数
- |
-- 可执行文件-Windows/Ubuntu/Mac
- IntelliJ插件-Windows
- |
-
-class
- |
-- 支持C++语言中class的变量、函数自动转换为对应TS接口中的变量、函数
- |
-- 可执行文件-Windows/Ubuntu/Mac
- IntelliJ插件-Windows
- |
-
-namespace
- |
-- 支持C++语言中namespace域的变量、函数自动转换为对应TS接口中的变量、函数
- 支持.h文件中namespace域class转换为对应TS接口中的class
- |
-- 可执行文件-Windows/Ubuntu/Mac
- IntelliJ插件-Windows
- |
-
-文件
- |
-- 支持.h文件中namespace数据类型转换为对应TS接口中的数据类型
- 支持C++文件名格式A.h的文件转换
- 支持命令行方式转换时参数为多个文件路径,相互之间用英文逗号分开
- 支持命令行方式转换时指定文件夹路径方式转换
- |
-- 可执行文件-Windows/Ubuntu/Mac
- IntelliJ插件-Windows
- |
-
-
-
-
-**表 2**
-
-[待开发特性](https://gitee.com/openharmony/napi_generator/blob/master/docs/guide/ts/ROADMAP_ZH.md)
\ No newline at end of file
diff --git a/docs/log/release-notes.md b/docs/log/release-notes.md
index eb8a2e4107e500fa4d19141f516533b8f4f33692..9682698e8dbd0ed42f3f99a1e0b3c6fd2c9bca05 100644
--- a/docs/log/release-notes.md
+++ b/docs/log/release-notes.md
@@ -20,18 +20,10 @@
暂无
-## h2ets
-
-暂无
-
## scan(API扫描工具)
暂无
-## hdf(HCS可视化工具)
-
-暂无
-
# roadmap
## dts2cpp(NAPI框架代码生成工具)
@@ -54,14 +46,7 @@
暂无
-## h2ets
-
-暂无
-
## scan(API扫描工具)
暂无
-## hdf(HCS可视化工具)
-
-暂无
\ No newline at end of file
diff --git a/docs/readme.md b/docs/readme.md
index 77c6ae6df263c380fc624ac499e61f234ea174c9..8c92f98b45ae9f318228887987342cad653fd76a 100644
--- a/docs/readme.md
+++ b/docs/readme.md
@@ -2,23 +2,19 @@
## dts2cpp(NAPI框架代码生成工具)
-[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/README_zh.md)
+[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/dts2cpp_README_zh.md)
## h2dts(TS接口生成工具)
-[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2dts/README_zh.md)
+[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2dts/h2dts_README_ZH.md)
## cmake2gn(GN脚本生成工具)
-[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/cmake2gn/README_zh.md)
+[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/cmake2gn/cmake2gn_README_ZH.md)
## h2sa(SERVICE框架生成工具)
-[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2sa/README_zh.md)
-
-## dts2ets
-
-暂无
+[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2sa/h2sa_README_ZH.md)
## h2dtscpp(NATIVE生成工具)
@@ -26,8 +22,4 @@
## scan(API扫描工具)
-[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/tool/api/README_zh.md)
-
-## hdf(HCS可视化工具)
-
-[readme](https://gitee.com/openharmony/drivers_hdf_core/tree/master/framework/tools/hcs-view/README_zh.md)
\ No newline at end of file
+[readme](https://gitee.com/openharmony/napi_generator/blob/master/src/tool/api/scan_README_ZH.md)
\ No newline at end of file
diff --git a/docs/requirement/To-do_list.md b/docs/requirement/To-do_list.md
deleted file mode 100644
index c2089f92570b76faf2377ea2ab81bfe2495e881c..0000000000000000000000000000000000000000
--- a/docs/requirement/To-do_list.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# To-do list
-
-## History
-
-| 版本号 | 修订人 | 修订日期 | 修订描述 |
-| ------ | ------ | ------------- | -------- |
-| V0.1 | 苟晶晶 | 2024年3月25日 | 新建 |
-| | | | |
-
-## Requirement
-
-| issue | 描述 | 分析 | 结论 | ToDo |
-| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ---------- | ---- |
-| 【需求】[napi_tool]:工具生成代码中增加打印调试信息 | 工具生成代码中增加关键节点信息打印,便于开发者确认流程 | 开发者通过关键信息打印,可以迅速定位问题 | 优先级低 | |
-| 【需求】[napi_tool]: 箭头函数参数为回调函数时,编译报错 | 箭头函数的参数是箭头函数形式的回调函数时,编译报错。
.d.ts文件内容如下:
declare namespace napitest {
export class A {
a: string;
}
export interface InterfaceA {
callFunction: (result: number) => void;
}
export interface InterfaceB {
funcByClass: (a: A, b: number, callback: (result: number) => void, c: InterfaceA) => number;
}
// export const addByClass: (a: A, b: number, callback: (result: number) => void, c: InterfaceA) => number;
}
export default napitest; | 扩展工具的特性范围,提高工具可用性 | 优先级低 | |
-| 【需求】[napi_tool]:(等待更佳解决方案)分离生成的工具代码普通方法和回调方法,防止嵌套使用头文件 | 需求背景: 当前工具生成的中间代码,普通方法和回调方法的接口均在一个头文件里,这样会导致嵌套使用头文件造成可读性不强,需要整改生成代码将普通方法和回调方法的接口分离到不同头文件,增加易用性和可读性
需求阻塞点:
由于工具生成的中间代码均在 XXXmiddle.cpp 中,将XXX.h分离成XXXToC.h与XXXToJs.h之后,XXXmiddle.cpp中include, 若.d.ts中的文件声明一个interface类中全部定义为注册回调的方法,按照预期应该将该interface声明在XXXToJs.h中,而由于注册回调的中间代码都在XXXmiddle.cpp中, XXXmiddle.cpp中该interface的构造函数用到了XXXToJs.h中定义的类,这时若要解决这个问题,就需将XXXmiddle.cpp文件进行拆分,这样代码改动太大,需寻求更佳的解决方案
当前进展:
当前修改无法跑过test_on测试用例集 | 需求调研,提高工具可用性 | 优先级降低 | |
-| 【需求】[napi_tool]: on/off第二个参数支持object | [napi_tool] on/off第二个参数支持object,其中object中定义需要注册的回调
function on(type: 'missionEvent', listener: MissionListener): number;
export interface MissionListener {
onMissionCreated(mission: number): void;
onMissionDestroyed(mission: number): void;
} | 扩展注册的使用场景,增加工具易用性 | 优先级中 | |
-| 【需求】[napi_tool]: on注册回调的箭头函数支持携带js返回值给C++ | on注册回调的箭头函数支持携带js返回值给C++;
1130后支持 | 需求调研,业务需要根据回调返回值进行后续处理的场景 | 优先级低 | |
-| 【需求】[napi_tool]: 支持js业务代码回调接口中的回调js函数 | function_direct处理逻辑覆盖此场景,需要增加只传递回调,不触发的场景
.d.ts定义:
function callbackWrapper(original: Function): (err: Object, value: Object) => void;
调用方式:
function callbackWrapper(original) {
if (typeof original !== 'function') {
let error = new BusinessError(`Parameter error.The type of ${original} must be function`);
throw error;
}
const descriptors = getOwnPropertyDescriptors(original);
if (typeof descriptors.length.value === 'number') {
descriptors.length.value++;
}
if (typeof descriptors.name.value === 'string') {
descriptors.name.value += 'callbackified';
}
function cb(...args) {
callbackified(original, ...args);
}
Object.defineProperties(cb, descriptors);
return cb;
} | 需求调研,扩展工具的特性范围,提高工具可用性。 | 优先级低 | |
-| 【需求】[napi_tool]: type, interface支持成员变量any, object, Enum为可选参数 | type, interface当前成员变量支持any, object, Enum可选参数的转换
当前interface/type支持可选参数类型已经包括:number, string, boolean, Array, string/number/boolean[], Map, {[key:string]:string/number/boolean}, number \| string \|boolean
待支持类型:any, object, Enum
.d.ts文件如下所示:
export enum LaunchReason {
UNKNOWN = 0,
START_ABILITY = 1,
CALL = 2,
CONTINUATION = 3,
}
type test =
{
param1?: object;
param2?: any;
param3?: Array;
param4?: Map;
$param5?: any;
param6?: Array;
param7?: Map;
param8?: LaunchReason;
}
interface interfaceTest
{
param1?: object;
param2?: any;
param3?: Array;
param4?: Map;
$param5?: any;
param6?: Array;
param7?: Map;
param8?: LaunchReason;
}
function func(v1: test, v2: interfaceTest): void; | 使用场景较少,建议暂不支持 | 优先级低 | |
-| 【需求】[gn, api, service, ts]:modify gn faq and add storytest for api, service, ts tools | 修改gn工具faq文档并为ts, api, service工具增加storytest,可自动化测试 | 确认需继续维护的工具可增加storytest和unittest | 优先级中 | |
-| 【需求】[napi_tool]:ts接口定义入参/变量为any,JS调用时部分参数类型报错 | ts接口定义入参/变量为any,JS调用时参数类型为map、array、interface、interface(enum)嵌套时报错
ts定义如下:
function fun1(v: any, v1: string): number;
JS调用如下:
// map> --当前不支持
ret = test.fun1({"test": ["okay", "okay"], "test1": ["res", "res"]}, 'aaa');
assert.strictEqual(ret, 0);
// Array