@eosrio/node-abieos 4.1.0-f7d5b45 → 4.2.0-f7d5b45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +82 -43
- package/LICENSE +37 -37
- package/README.md +147 -89
- package/dist/_tsup-dts-rollup.d.cts +123 -105
- package/dist/_tsup-dts-rollup.d.ts +123 -105
- package/dist/abieos-darwin-arm64.node +0 -0
- package/dist/abieos-darwin-x64.node +0 -0
- package/dist/abieos-linux-x64.node +0 -0
- package/dist/abieos-win32-x64.node +0 -0
- package/dist/abieos.cjs +284 -261
- package/dist/abieos.d.cts +1 -0
- package/dist/abieos.d.ts +1 -0
- package/dist/abieos.js +252 -230
- package/dist/abieos.node +0 -0
- package/dist/abieos.ts +315 -268
- package/package.json +56 -56
- package/bun.lock +0 -516
package/CHANGELOG.md
CHANGED
|
@@ -1,43 +1,82 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) where possible.
|
|
6
|
-
|
|
7
|
-
## [4.
|
|
8
|
-
|
|
9
|
-
> The `-f7d5b45` suffix denotes the upstream `AntelopeIO/abieos` commit hash bundled with this release.
|
|
10
|
-
|
|
11
|
-
###
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
###
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
###
|
|
43
|
-
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) where possible.
|
|
6
|
+
|
|
7
|
+
## [4.2.0-f7d5b45] - 2026-05-17
|
|
8
|
+
|
|
9
|
+
> The `-f7d5b45` suffix denotes the upstream `AntelopeIO/abieos` commit hash bundled with this release. The abieos submodule is unchanged from `4.1.x`; this release adds Windows and macOS support and multi-platform prebuilt distribution.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- **Windows support** via MinGW-w64 (GCC). `abieos` cannot be built with MSVC (its C++ depends on libstdc++/libc++ standard-library semantics and GCC/Clang extensions MSVC's STL/compiler does not provide); `CMakeLists.txt` now fails fast with an actionable message if MSVC is detected. cmake-js only emits the MSVC-format `node.lib` and an `#ifdef _MSC_VER`-gated delay-load hook, so the MinGW build instead generates a *delay-import* library with `dlltool` and compiles its own delay-load hook (`src/win_delay_load_hook.cc`) that binds the Node-API symbols to the **host process image**. The single Windows binary therefore works under `node.exe`, `bun.exe`, `electron.exe`, etc. — not just a file literally named `node.exe`. Verified locally on Windows: full test suite **55/55 passing** under Node 24, and end-to-end JSON⇄hex round-trip under Bun (which previously crashed before the delay-load hook).
|
|
13
|
+
- **macOS support** as a **universal2** (`arm64` + `x86_64`) binary via Clang/libc++ (Xcode). `CMakeLists.txt` forces `CMAKE_OSX_ARCHITECTURES=arm64;x86_64` (option `ABIEOS_MAC_UNIVERSAL`, default `ON`); the one binary is published under both `darwin-arm64` and `darwin-x64`. Built and arm64-tested in CI; not validated locally (no macOS dev environment).
|
|
14
|
+
- **Multi-platform prebuilt distribution.** The package bundles a prebuilt binary per platform — `abieos-<platform>-<arch>.node` (`linux-x64`, `win32-x64`, `darwin-arm64`, `darwin-x64`) — and a platform-aware loader (`lib/abieos.ts`, exported `resolveNative`) selects the correct binary at runtime, searching the `dist/` (published) and `lib/` (source) layouts and falling back to the generic `abieos.node`. `npm i` is zero-build on supported platforms.
|
|
15
|
+
- Added CI jobs `build-windows` (`windows-latest`, MinGW-w64 via `msys2/setup-msys2`) and `build-macos` (`macos-14`/Apple-Silicon, universal2). The Linux job also uploads `abieos-linux-x64.node`. Each job builds, tests, and uploads its `.node` artifact.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- `package.json`: `build:win` → `cmake-js compile -G Ninja && node scripts/copy-module.mjs`; `build:mac` wired to compile + copy (previously bare `cmake-js` stubs).
|
|
19
|
+
- `scripts/copy-module.mjs`: deterministically locates the addon across single-config (`build/`) and multi-config (`build/{Release,Debug}/`) generator layouts (no recursive scan — avoids stale binaries), exits non-zero if none is found, and on macOS writes both `abieos-darwin-arm64.node` and `abieos-darwin-x64.node` from the universal2 build.
|
|
20
|
+
- `CMakeLists.txt`: portable `EXISTS` submodule check (replaces Unix-only `git submodule status | grep`); CRLF-robust `node-addon-api` include resolution; strips only the MSVC `/DELAYLOAD:*` token from `CMAKE_SHARED_LINKER_FLAGS` rather than clearing the whole variable.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- **`stringToName` return type** was `BigInt` (the wrapper object type) instead of `bigint` (the primitive it actually returns) — every TypeScript consumer hit `Type 'BigInt' is not assignable to type 'bigint'`. Now `bigint`.
|
|
24
|
+
- **Self-contained typings:** `binToJson`'s parameter is now `Uint8Array` instead of the ambient Node `Buffer` global (a `Buffer` is a `Uint8Array`, so existing callers are unaffected). The published `.d.ts` no longer depends on `@types/node` and type-checks cleanly under TypeScript's default `skipLibCheck: false` without extra consumer setup. Verified from a clean `npm install` of the packed tarball across Node + Bun (ESM & CJS) and TypeScript (`nodenext`).
|
|
25
|
+
|
|
26
|
+
### Notes
|
|
27
|
+
- The `darwin-arm64` / `darwin-x64` prebuilts are the same universal2 binary, committed from the `build-macos` CI artifacts (Mach-O cannot be cross-built from the Linux/Windows dev environments). Their CI provenance is the source of truth.
|
|
28
|
+
- GCC 13 emits one benign `-Wstringop-overflow` warning in the vendored `abieos/include/eosio/bitset.hpp`; it is not an error and does not affect correctness (Linux CI builds with Clang and does not emit it).
|
|
29
|
+
|
|
30
|
+
## [4.1.1-f7d5b45] - 2026-05-17
|
|
31
|
+
|
|
32
|
+
> The `-f7d5b45` suffix denotes the upstream `AntelopeIO/abieos` commit hash bundled with this release. The submodule is unchanged from `4.1.0`, so the published native binary (`dist/abieos.node`) and JavaScript/typings bundle are byte-identical to `4.1.0`. This is a dependency-maintenance release only.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
- **`typescript`** 5.9.3 → 6.0.3 (major). TypeScript 6.0 changed the default `types` value from "auto-include all `@types`" to `[]`; `tsconfig.json` now sets `"types": ["node"]` (the documented migration) so the `@types/node` globals resolve. Build output validated byte-identical to the previous TypeScript 5.9 build.
|
|
36
|
+
- **`@microsoft/api-extractor`** 7.57.2 → 7.58.7 (bundled TypeScript compiler 5.8.2 → 5.9.3, narrowing the parse skew against TypeScript 6.0; `tsup` typings rollup validated identical).
|
|
37
|
+
- **`c8`** 10.1.3 → 11.0.0 (major — coverage tool upgrade; exercised by CI's Node 22.x coverage job).
|
|
38
|
+
- **`@types/node`** 25.3.0 → 25.8.0.
|
|
39
|
+
- **`@wharfkit/antelope`** 1.1.1 → 1.2.0 (test-only dependency).
|
|
40
|
+
- **`node-addon-api`** 8.5.0 → 8.7.0 (native build-time headers; the prebuilt binary is unchanged).
|
|
41
|
+
|
|
42
|
+
### Notes
|
|
43
|
+
- `@microsoft/api-extractor` bundles TypeScript 5.9.3 and emits an informational `*** The target project appears to use TypeScript 6.0.3 which is newer than the bundled compiler engine` notice during the typings rollup. This is non-fatal; the generated `dist/_tsup-dts-rollup.d.ts` rollup is byte-identical to the TypeScript 5.9 baseline.
|
|
44
|
+
- All updated packages are `devDependencies`; the package ships no runtime dependencies, so consumers are unaffected. Outstanding `npm audit` advisories are confined to dev/build transitive tooling and do not reach the published artifact.
|
|
45
|
+
|
|
46
|
+
## [4.1.0-f7d5b45] - 2026-02-21
|
|
47
|
+
|
|
48
|
+
> The `-f7d5b45` suffix denotes the upstream `AntelopeIO/abieos` commit hash bundled with this release.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
- Switched abieos submodule origin from `igorls/abieos` fork to official [`AntelopeIO/abieos`](https://github.com/AntelopeIO/abieos). The fork's `abieos_delete_contract` was merged upstream in [PR #27](https://github.com/AntelopeIO/abieos/pull/27), so the fork is no longer needed.
|
|
52
|
+
- **`cmake-js`** 7.3.1 → 8.0.0 (major — build validated, no CMake changes required).
|
|
53
|
+
- **`c8`** 9.1.0 → 10.1.3 (major — coverage tool upgrade).
|
|
54
|
+
- **`@microsoft/api-extractor`** 7.52.13 → 7.57.2.
|
|
55
|
+
- **`@types/node`** 24.6.0 → 25.3.0.
|
|
56
|
+
- **`tsup`** 8.5.0 → 8.5.1.
|
|
57
|
+
- **`typescript`** 5.9.2 → 5.9.3.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## [4.0.3-f7d5b45] - 2025-09-29
|
|
62
|
+
|
|
63
|
+
> The `-f7d5b45` suffix denotes the upstream `AntelopeIO/abieos` commit hash bundled with this release.
|
|
64
|
+
|
|
65
|
+
### Upstream Highlights (`2039717` → `f7d5b45`)
|
|
66
|
+
- Added full support for the new `bitset` ABI type, including serialization/deserialization, key conversions, and regression tests.
|
|
67
|
+
- Introduced `fixed_array` handling in the ABI serializer, so fixed-length array definitions now round-trip correctly.
|
|
68
|
+
- Switched floating-point JSON conversion to `std::to_chars`, improving numeric fidelity and removing legacy `fpconv` sources.
|
|
69
|
+
- Tightened validation around ABI parsing (better sanity checks, error messages, and compatibility guards) while keeping compatibility with `eosio::abi/1.x` definitions.
|
|
70
|
+
- Streamlined upstream CI and build configurations (consistent CMake/toolchain defaults, GCC 14 coverage) matching the latest Antelope “Spring” tooling.
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
- `c8` coverage tooling to produce lcov reports consumed by Coveralls.
|
|
74
|
+
- Comprehensive unit tests covering parse error branches to reach 100% coverage.
|
|
75
|
+
- Repository `LICENSE` now includes upstream `AntelopeIO/abieos` MIT license details.
|
|
76
|
+
- Formal `CHANGELOG.md` to track release history.
|
|
77
|
+
|
|
78
|
+
### Changed
|
|
79
|
+
- Workflow now runs coverage on Node 22.x only while keeping multi-version tests.
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
- Ensured `loadAbiHex` debug branch is executed within tests, eliminating remaining coverage gaps.
|
package/LICENSE
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 EOS Rio
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|
|
22
|
-
|
|
23
|
-
----
|
|
24
|
-
|
|
25
|
-
Portions of this project are derived from or bundle the `AntelopeIO/abieos`
|
|
26
|
-
library, which is licensed under the MIT License:
|
|
27
|
-
|
|
28
|
-
AntelopeIO/abieos
|
|
29
|
-
|
|
30
|
-
Copyright (c) 2021-2022 EOS Network Foundation (ENF) and its
|
|
31
|
-
contributors. All rights reserved.
|
|
32
|
-
This ENF software is based upon:
|
|
33
|
-
|
|
34
|
-
EOSIO/abieos
|
|
35
|
-
|
|
36
|
-
Copyright (c) 2017-2019 block.one and its contributors. All rights
|
|
37
|
-
reserved.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 EOS Rio
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
22
|
+
|
|
23
|
+
----
|
|
24
|
+
|
|
25
|
+
Portions of this project are derived from or bundle the `AntelopeIO/abieos`
|
|
26
|
+
library, which is licensed under the MIT License:
|
|
27
|
+
|
|
28
|
+
AntelopeIO/abieos
|
|
29
|
+
|
|
30
|
+
Copyright (c) 2021-2022 EOS Network Foundation (ENF) and its
|
|
31
|
+
contributors. All rights reserved.
|
|
32
|
+
This ENF software is based upon:
|
|
33
|
+
|
|
34
|
+
EOSIO/abieos
|
|
35
|
+
|
|
36
|
+
Copyright (c) 2017-2019 block.one and its contributors. All rights
|
|
37
|
+
reserved.
|
package/README.md
CHANGED
|
@@ -1,89 +1,147 @@
|
|
|
1
|
-
# node-abieos
|
|
2
|
-
|
|
3
|
-

|
|
4
|
-

|
|
5
|
-
[](https://www.npmjs.com/package/@eosrio/node-abieos)
|
|
6
|
-
[](https://coveralls.io/github/eosrio/node-abieos?branch=master)
|
|
7
|
-
|
|
8
|
-
Node.js native binding for [abieos](https://github.com/AntelopeIO/abieos), with some improvements:
|
|
9
|
-
|
|
10
|
-
- Internal loaded contract map
|
|
11
|
-
- deleteContract: to remove the loaded contract from memory (now in vanilla abieos too)
|
|
12
|
-
|
|
13
|
-
Made with ♥ by [EOS Rio](https://eosrio.io/)
|
|
14
|
-
|
|
15
|
-
----
|
|
16
|
-
**
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
# examples/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
1
|
+
# node-abieos
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
[](https://www.npmjs.com/package/@eosrio/node-abieos)
|
|
6
|
+
[](https://coveralls.io/github/eosrio/node-abieos?branch=master)
|
|
7
|
+
|
|
8
|
+
Node.js native binding for [abieos](https://github.com/AntelopeIO/abieos), with some improvements:
|
|
9
|
+
|
|
10
|
+
- Internal loaded contract map
|
|
11
|
+
- deleteContract: to remove the loaded contract from memory (now in vanilla abieos too)
|
|
12
|
+
|
|
13
|
+
Made with ♥ by [EOS Rio](https://eosrio.io/)
|
|
14
|
+
|
|
15
|
+
----
|
|
16
|
+
**Linux, Windows and macOS are supported.** The npm package bundles a prebuilt
|
|
17
|
+
binary per platform (`abieos-<platform>-<arch>.node`) and the loader picks the
|
|
18
|
+
right one at runtime — `npm i` is zero-build on supported platforms. Building
|
|
19
|
+
from source is only needed for unsupported platform/arch combinations or local
|
|
20
|
+
development (see [Building](#building)).
|
|
21
|
+
|
|
22
|
+
- Typescript typings included
|
|
23
|
+
- Prebuilt binaries bundled: `linux-x64`, `win32-x64`, `darwin-x64`,
|
|
24
|
+
`darwin-arm64` (loaded automatically by platform/arch)
|
|
25
|
+
- Windows builds with MinGW-w64 (GCC) — **MSVC is not supported**: the bundled
|
|
26
|
+
abieos C++ requires libstdc++/libc++ semantics MSVC's STL lacks
|
|
27
|
+
- macOS builds with the Xcode Command Line Tools (Clang/libc++)
|
|
28
|
+
- Now supports NodeJS, Deno, and Bun runtimes.
|
|
29
|
+
|
|
30
|
+
## Install
|
|
31
|
+
|
|
32
|
+
```shell script
|
|
33
|
+
npm i @eosrio/node-abieos --save
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
CommonJS
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
const nodeAbieos = require('@eosrio/node-abieos');
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
ES Modules (NodeJS, Bun)
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import {Abieos} from "@eosrio/node-abieos";
|
|
48
|
+
const abieos = Abieos.getInstance();
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Deno
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# examples/basic.cjs can be run with:
|
|
55
|
+
deno run --allow-ffi --allow-read examples/basic.cjs
|
|
56
|
+
|
|
57
|
+
# For an example using the published npm package with Deno:
|
|
58
|
+
# Check the examples/deno-abieos-test folder
|
|
59
|
+
cd examples/deno-abieos-test
|
|
60
|
+
deno run --allow-ffi --allow-read main.ts
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Bun
|
|
64
|
+
|
|
65
|
+
```shell script
|
|
66
|
+
# examples/basic.mjs can be run with:
|
|
67
|
+
bun run examples/basic.mjs
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Check the [/examples](https://github.com/eosrio/node-abieos/tree/master/examples) folder for implementation examples
|
|
71
|
+
|
|
72
|
+
## Building
|
|
73
|
+
|
|
74
|
+
> Most users do **not** need this — the npm package ships prebuilt binaries for
|
|
75
|
+
> `linux-x64`, `win32-x64`, `darwin-x64` and `darwin-arm64`. Build from source
|
|
76
|
+
> only for an unsupported platform/arch or for local development.
|
|
77
|
+
|
|
78
|
+
Clone with submodules first (required on every platform):
|
|
79
|
+
|
|
80
|
+
```shell script
|
|
81
|
+
git clone https://github.com/eosrio/node-abieos.git --recursive
|
|
82
|
+
cd node-abieos
|
|
83
|
+
npm install
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Linux
|
|
87
|
+
|
|
88
|
+
We recommend Clang 18 to build the `abieos` C++ library:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
wget https://apt.llvm.org/llvm.sh
|
|
92
|
+
chmod +x llvm.sh
|
|
93
|
+
sudo ./llvm.sh 18
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```shell script
|
|
97
|
+
npm run build:linux
|
|
98
|
+
npm run build
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Windows (MinGW-w64)
|
|
102
|
+
|
|
103
|
+
`abieos` does **not** build with MSVC — its C++ depends on libstdc++/libc++
|
|
104
|
+
standard-library semantics and GCC/Clang extensions that MSVC's STL/compiler do
|
|
105
|
+
not provide, and this is not patchable in the vendored submodule. Build with
|
|
106
|
+
MinGW-w64 (GCC) instead.
|
|
107
|
+
|
|
108
|
+
1. Install [MSYS2](https://www.msys2.org/), then from an MSYS2 shell install the
|
|
109
|
+
toolchain (any MinGW-w64 distribution with `g++`, `ninja` and `dlltool`
|
|
110
|
+
works, e.g. WinLibs):
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
2. Put the MinGW-w64 `bin` directory on `PATH` (e.g. `C:\msys64\mingw64\bin`)
|
|
117
|
+
so `g++`, `ninja` and `dlltool` are resolvable.
|
|
118
|
+
|
|
119
|
+
3. Build:
|
|
120
|
+
|
|
121
|
+
```shell script
|
|
122
|
+
npm run build:win
|
|
123
|
+
npm run build
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`build:win` drives cmake-js with the Ninja generator and synthesizes a GNU
|
|
127
|
+
import library for the Node-API symbols, so the resulting `.node` loads in the
|
|
128
|
+
standard (MSVC-built) Node.js for Windows.
|
|
129
|
+
|
|
130
|
+
### macOS
|
|
131
|
+
|
|
132
|
+
Install the Xcode Command Line Tools (provides Clang and libc++):
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
xcode-select --install
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```shell script
|
|
139
|
+
npm run build:mac
|
|
140
|
+
npm run build
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Documentation
|
|
144
|
+
|
|
145
|
+
For detailed and user-friendly documentation, including installation, usage, API reference, error handling, debugging, and examples, please refer to the [documentation](docs/README.md).
|
|
146
|
+
|
|
147
|
+
For contribution guidelines and developer documentation, refer to the [contribution guidelines](docs/CONTRIBUTING.md).
|