You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: src/bindings/js/docs/CODESTYLE.md
+6
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,14 @@
1
1
# Code Style Guide
2
2
3
+
Node.js bindings contain two parts: C++ and Typescript/JavaScript.
4
+
3
5
This article presents the coding standards for JavaScript and TypeScript parts of **openvino-node** package. The following rules will help maintain code quality and consistency throughout the codebase.
4
6
7
+
For C++ codestyle rules, refer to [this document](https://github.com/openvinotoolkit/openvino/blob/master/docs/dev/coding_style.md).
8
+
5
9
Make sure your IDE has ESLint plugin installed. Its rules are specified in the [.eslint-global.js file](../.eslintrc-global.js). Keep in mind that your PR will not be approved if it does not meet the following requirements.
6
10
11
+
7
12
## General Rules
8
13
9
14
### 1. Semicolons
@@ -89,6 +94,7 @@ Make sure your IDE has ESLint plugin installed. Its rules are specified in the [
89
94
- Special case for the `catch` keyword: No space after `catch`
[OpenVINO™ Node.js Bindings Examples of Usage](../../../../samples/js/node/README.md)
77
76
78
-
## Contribution
77
+
## Contributing
79
78
80
-
If you want to contribute to the project, refer to the [code style rules](./CODESTYLE.md) and [contribution guide](../../../../CONTRIBUTING.md)first.
79
+
Your contributions are welcome! Make sure to read the [Contribution Guide](https://github.com/openvinotoolkit/openvino/blob/master/src/bindings/js/node/CONTRIBUTING.md)to learn how you can get involved.
Copy file name to clipboardexpand all lines: src/bindings/js/docs/code_examples.md
+13-7
Original file line number
Diff line number
Diff line change
@@ -1,22 +1,24 @@
1
1
# How to extend the OpenVINO™ JavaScript API code
2
2
3
-
## Build the OpenVINO™ JavaScript API
3
+
## Build the OpenVINO™ JavaScript API
4
+
4
5
For detailed build instructions, refer to the [OpenVINO™ JavaScript API documentation](./README.md).
5
6
7
+
6
8
## Project's naming conventions
9
+
7
10
When implementing the C++ sources for the JavaScript API, it is essential to adhere to the OpenVINO naming conventions described in the [OpenVINO Coding Style Guide](../../../../docs/dev/coding_style.md). In summary, the naming style employs `Snake Case` for methods, functions, and variables, while `Camel Case` is used for class names. Additionally, the naming of entities in the C++ sources should closely mirror their equivalents in the C++ API to maintain consistency.
8
11
9
12
For methods that are exposed to JavaScript, the naming convention transitions to `Camel Case`, aligning with common JavaScript practices. As an example, a method in the C++ API named `get_element_type` would be represented in the JavaScript API as `getElementType()`.
10
13
14
+
11
15
## node-addon-api module
12
16
13
17
[node addon api](https://github.com/nodejs/node-addon-api) is used to create OpenVINO JavaScript API for Node.js. The quickest way to learn is to follow the official [examples](https://github.com/nodejs/node-addon-examples). It is recommended to check out the tutorial on [how to create a JavaScript object from a C++ object](https://github.com/nodejs/node-addon-examples/tree/main/src/2-js-to-native-conversion/object-wrap-demo/node-addon-api).
14
18
15
19
16
-
17
-
18
-
19
20
## Adding a new class and method
21
+
20
22
To introduce a new `MyTensor` class that interacts with the `ov::Tensor` class, follow these steps:
21
23
- The class should facilitate construction from an ov::Tensor instance and allow initialization from a JavaScript element type and shape.
22
24
- It should also provide a getElementType method that retrieves the ov::Tensor element type.
@@ -25,7 +27,7 @@ Begin by creating a header file for the `MyTensor` class in the OpenVINO reposit
When binding JavaScript arguments with C++ functions, it is crucial to validate and convert the arguments appropriately. The template `ov::js::validate` function is a utility that facilitates this process. It is particularly useful for handling different overloads of functions and ensuring standardized error messages when arguments do not match expected signatures.
81
84
Before implementing a new conversion function, such as `js_to_cpp<ov::Shape>`, review the existing [helper methods](../../node/include/helper.hpp) to see if one already meets your requirements.
82
85
86
+
83
87
### New class initialization
88
+
84
89
When a new class is introduced to the `openvino-node` module, it must be initialized upon module loading. This is done in the [addon.cpp](../../src/addon.cpp) file. The initialization process registers the class with the Node.js environment so that it can be used within JavaScript code.
Before executing individual test files, a one-time setup is required. If you have not previously executed `npm run test`, initiate the setup by running the following command:
24
24
25
25
```shell
26
26
npm run test_setup
27
-
```
27
+
```
28
28
29
29
More information on running tests from the command line can be found in the [Node.js documentation](https://nodejs.org/docs/latest/api/test.html#running-tests-from-the-command-line).
30
30
@@ -45,19 +45,20 @@ It is recommended to run the code style check each time new tests are added.
45
45
46
46
47
47
## Writing OpenVINO™ JavaScript API tests
48
+
48
49
### Before start
49
50
Follow and complete [Examples of OpenVINO™ JavaScript API code](./code_examples.md).
50
51
51
52
52
-
53
53
### Adding new test-case in the correct place
54
54
Each new test should verify the correct behavior of the new functionality (e.g. class, method).
55
55
56
56
Unit test files are located in the `<openvino_repo>/src/bindings/js/node/tests/unit/` directory and their names correspond to the class/module to be tested.
57
57
58
58
Always add tests to the correct locations and create new files only when necessary. *Remember to include the license on top of each new file*.
59
59
60
-
### Test writing guidelines
60
+
61
+
### Test writing guidelines
61
62
Each test file starts with a `describe` block to group all tests related to a specific class or module. The name of the `describe` block should match the name of the class or module being tested, for example *ov.Core tests*.
62
63
63
64
Within the `describe` block, individual tests are defined using `test` or `it` blocks, with the name of the test reflecting what is being tested. If multiple tests relate to the same method, they can be grouped within a nested `describe` block.
Your commitment to this project is greatly appreciated and the following guide is intended to help you contribute.
4
+
5
+
Make sure to read [main contribution guide](https://github.com/openvinotoolkit/openvino/blob/master/CONTRIBUTING.md) first. It covers most topics related to contributing to OpenVINO.
6
+
7
+
8
+
## TLDR
9
+
10
+
1. Decide what you want to change.
11
+
2. Create your fork of the OpenVINO repository.
12
+
3. Create a branch with a meaningful name for your changes.
13
+
4. Align the code style, commit the changes, and run tests.
14
+
5. Create a Pull Request, which clearly describes what has been changed and why.
15
+
6. Go through the Code Review.
16
+
7. Get your awesome code merged!
17
+
18
+
Read the section below for more details.
19
+
20
+
21
+
## How to Decide What to Change
22
+
23
+
In case of minor fixes, like changing variable names, additional parameter checks, etc., go to the next step.
24
+
25
+
However, if you want to bring significant changes, for example, the extension of architecture or a big part of functionality, that involves a large amount
26
+
of source code, open [an issue](https://github.com/openvinotoolkit/openvino/issues/new?assignees=octocat&labels=enhancement%2Cfeature&projects=&template=feature_request.yml&title=%5BFeature+Request%5D%3A+) first and discuss your idea with
27
+
codeowners. It will prevent you from doing extra work.
28
+
29
+
You can also take one of the well-described tasks from the [Good First Issue](https://github.com/orgs/openvinotoolkit/projects/3/views/14) section. It can be a great start to contributing with codeowners' support!
30
+
31
+
32
+
## Let's code
33
+
34
+
Get familiar with Node.js API architecture and code samples.
35
+
Refer to the [guide](../docs/code_examples.md), which will help you understand the component structure and the code style.
36
+
37
+
The environment setup and build instructions can be found in [Building the Node.js API](https://github.com/openvinotoolkit/openvino/blob/master/src/bindings/js/docs/README.md#openvino-node-package-developer-documentation).
38
+
39
+
Run tests! If you add a new functionality, make sure that it is covered by tests first.
40
+
Read [the guide](../docs/test_examples.md) for more details about the tests and their runs.
41
+
Many CI checks will run after getting a Code Review. Make sure that
42
+
all checks have passed. CI checks are composed of both functional tests and code-style checks and may fail because of warnings/errors in both stages.
43
+
44
+
Remember to follow [our codestyle](../docs/CODESTYLE.md).
45
+
By following the provided guide and using an automotive code style checking tool, like
46
+
**eslint** and **clang-format-9**, you will save some time and help with the code review of proposed changes.
47
+
48
+
49
+
## Description of the Pull Request
50
+
51
+
Append all PR titles with the `[OV JS]` tag. Provide any relevant details in the description, as it will definitely help with the review. The minimum requirement is a compact, bulleted list of proposed changes.
52
+
53
+
Use the following template:
54
+
```
55
+
*Describe what is the purpose of this PR*
56
+
57
+
### Details:
58
+
- *Describe your changes.*
59
+
- ...
60
+
61
+
```
62
+
63
+
64
+
## License
65
+
66
+
By contributing to the OpenVINO project, you agree that your contributions will be
67
+
licensed under the terms of the [LICENSE](https://github.com/openvinotoolkit/openvino/blob/master/LICENSE).
Copy file name to clipboardexpand all lines: src/bindings/js/node/README.md
+25-5
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,14 @@
1
1
# OpenVINO™ Node.js Bindings
2
2
3
-
Use OpenVINO JavaScript API for your Node.js application.
3
+
Use OpenVINO to deploy deep learning models easily in Node.js applications.
4
4
5
-
## Usage
5
+
## Introduction
6
+
7
+
OpenVINO™ is an open-source toolkit designed for high-performance deep learning inference.
8
+
Node.js API provides bindings to subset APIs from OpenVINO Runtime.
9
+
The Node.js bindings enable JavaScript developers to use the capabilities of OpenVINO in their applications.
10
+
11
+
## Quick Start
6
12
7
13
Install the **openvino-node** package:
8
14
```bash
@@ -14,15 +20,21 @@ Use the **openvino-node** package:
14
20
const { addon:ov } =require('openvino-node');
15
21
```
16
22
23
+
Refer to the complete description of the `addon` API in the [documentation](https://docs.openvino.ai/2024/api/nodejs_api/addon.html).
24
+
25
+
See the [samples](https://github.com/openvinotoolkit/openvino/blob/master/samples/js/node/README.md) for more details on how to use it.
26
+
17
27
## Usage in Electron applications
18
28
19
29
To use the package in development of Electron applications on Windows, make sure that
20
30
**Desktop development with C++** component from
21
31
[Build Tools for Visual Studio](https://aka.ms/vs/17/release/vs_BuildTools.exe) is installed.
22
32
23
-
## Build From Sources
33
+
## Supported Platforms
24
34
25
-
For more details, refer to the [OpenVINO™ JavaScript API Developer Documentation](https://github.com/openvinotoolkit/openvino/blob/master/src/bindings/js/docs/README.md#openvino-node-package-developer-documentation)
35
+
- Windows x86
36
+
- Linux x86/ARM
37
+
- MacOS x86/ARM
26
38
27
39
## Documentation & Samples
28
40
@@ -31,11 +43,19 @@ For more details, refer to the [OpenVINO™ JavaScript API Developer Documentati
31
43
32
44
## Live Sample
33
45
34
-
You can run this sample in the browser; no installation is required.
46
+
You can run the following sample in the browser, no installation is required.
35
47
[Codesandbox](https://codesandbox.io/) is a free online service with limited resources. For optimal performance and more control, it is recommended to run the sample locally.
For more details, refer to the [OpenVINO™ JavaScript API Developer Documentation](https://github.com/openvinotoolkit/openvino/blob/master/src/bindings/js/docs/README.md#openvino-node-package-developer-documentation)
54
+
55
+
## Contributing
56
+
57
+
Contributions are always welcome! Read the [Contribution Guide](https://github.com/openvinotoolkit/openvino/blob/master/src/bindings/js/node/CONTRIBUTING.md) to learn how you can get involved.
0 commit comments