summaryrefslogtreecommitdiff
path: root/cli/napi/README.md
diff options
context:
space:
mode:
authorhaturau <135221985+haturatu@users.noreply.github.com>2024-11-20 01:20:47 +0900
committerGitHub <noreply@github.com>2024-11-20 01:20:47 +0900
commit85719a67e59c7aa45bead26e4942d7df8b1b42d4 (patch)
treeface0aecaac53e93ce2f23b53c48859bcf1a36ec /cli/napi/README.md
parent67697bc2e4a62a9670699fd18ad0dd8efc5bd955 (diff)
parent186b52731c6bb326c4d32905c5e732d082e83465 (diff)
Merge branch 'denoland:main' into main
Diffstat (limited to 'cli/napi/README.md')
-rw-r--r--cli/napi/README.md114
1 files changed, 0 insertions, 114 deletions
diff --git a/cli/napi/README.md b/cli/napi/README.md
deleted file mode 100644
index 7b359ac6e..000000000
--- a/cli/napi/README.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# napi
-
-This directory contains source for Deno's Node-API implementation. It depends on
-`napi_sym` and `deno_napi`.
-
-Files are generally organized the same as in Node.js's implementation to ease in
-ensuring compatibility.
-
-## Adding a new function
-
-Add the symbol name to
-[`cli/napi_sym/symbol_exports.json`](../napi_sym/symbol_exports.json).
-
-```diff
-{
- "symbols": [
- ...
- "napi_get_undefined",
-- "napi_get_null"
-+ "napi_get_null",
-+ "napi_get_boolean"
- ]
-}
-```
-
-Determine where to place the implementation. `napi_get_boolean` is related to JS
-values so we will place it in `js_native_api.rs`. If something is not clear,
-just create a new file module.
-
-See [`napi_sym`](../napi_sym/) for writing the implementation:
-
-```rust
-#[napi_sym::napi_sym]
-pub fn napi_get_boolean(
- env: *mut Env,
- value: bool,
- result: *mut napi_value,
-) -> Result {
- // ...
- Ok(())
-}
-```
-
-Update the generated symbol lists using the script:
-
-```
-deno run --allow-write tools/napi/generate_symbols_lists.js
-```
-
-Add a test in [`/tests/napi`](../../tests/napi/). You can also refer to Node.js
-test suite for Node-API.
-
-```js
-// tests/napi/boolean_test.js
-import { assertEquals, loadTestLibrary } from "./common.js";
-const lib = loadTestLibrary();
-Deno.test("napi get boolean", function () {
- assertEquals(lib.test_get_boolean(true), true);
- assertEquals(lib.test_get_boolean(false), false);
-});
-```
-
-```rust
-// tests/napi/src/boolean.rs
-
-use napi_sys::Status::napi_ok;
-use napi_sys::ValueType::napi_boolean;
-use napi_sys::*;
-
-extern "C" fn test_boolean(
- env: napi_env,
- info: napi_callback_info,
-) -> napi_value {
- let (args, argc, _) = crate::get_callback_info!(env, info, 1);
- assert_eq!(argc, 1);
-
- let mut ty = -1;
- assert!(unsafe { napi_typeof(env, args[0], &mut ty) } == napi_ok);
- assert_eq!(ty, napi_boolean);
-
- // Use napi_get_boolean here...
-
- value
-}
-
-pub fn init(env: napi_env, exports: napi_value) {
- let properties = &[crate::new_property!(env, "test_boolean\0", test_boolean)];
-
- unsafe {
- napi_define_properties(env, exports, properties.len(), properties.as_ptr())
- };
-}
-```
-
-```diff
-// tests/napi/src/lib.rs
-
-+ mod boolean;
-
-...
-
-#[no_mangle]
-unsafe extern "C" fn napi_register_module_v1(
- env: napi_env,
- exports: napi_value,
-) -> napi_value {
- ...
-+ boolean::init(env, exports);
-
- exports
-}
-```
-
-Run the test using `cargo test -p tests/napi`.