https://github.com/hanazuki/node-jsonnet
libjsonnet binding for Node.js
https://github.com/hanazuki/node-jsonnet
jsonnet node-addon
Last synced: 2 months ago
JSON representation
libjsonnet binding for Node.js
- Host: GitHub
- URL: https://github.com/hanazuki/node-jsonnet
- Owner: hanazuki
- License: mit
- Created: 2020-02-22T12:59:07.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-16T17:04:59.000Z (about 1 year ago)
- Last Synced: 2024-12-26T22:21:35.027Z (about 1 year ago)
- Topics: jsonnet, node-addon
- Language: C++
- Homepage: https://www.npmjs.com/package/@hanazuki/node-jsonnet
- Size: 19.1 MB
- Stars: 33
- Watchers: 2
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# node-jsonnet
**@hanazuki/node-jsonnet** is a [libjsonnet](https://jsonnet.org) binding for [Node.js](https://nodejs.org) (native addon), which supports all the basic Jsonnet functionality including `import` and native callbacks (`std.native`). It also comes with TypeScript type definitions.
## Synopsis
```typescript
import { Jsonnet } from "@hanazuki/node-jsonnet";
const jsonnet = new Jsonnet();
// Evaluates a simple Jsonnet program into a JSON value
jsonnet.evaluateSnippet(`{a: 1 + 2, b: self.a * 3}`)
.then(json => console.log(JSON.parse(json))); // => { a: 3, b: 9 }
// Jsonnet programs can use JavaScript values through external variables (std.extVar)
// and native callbacks (std.native).
jsonnet.extCode("x", "4")
.nativeCallback("add", (a, b) => Number(a) + Number(b), "a", "b")
.evaluateSnippet(`std.extVar("x") * std.native("add")(1, 2)`)
.then(json => console.log(JSON.parse(json))); // => 12
```
The library is documented in the TypeScript type definitions at [`types/index.d.ts`](types/index.d.ts), and [HTML documentation](https://hanazuki.github.io/node-jsonnet/) is also available online.
## Installation Requirements
- [Node.js](https://nodejs.org/) v20 or later
- [GCC](https://gcc.gnu.org/projects/cxx-status.html#cxx17) or [Clang](https://clang.llvm.org/cxx_status.html#cxx17) C++ compiler that supports C++17
- CMake 3.10 or later
## License
**@hanazuki/node-jsonnet** is licensed under the MIT License (See [LICENSE](LICENSE) file for the terms). **libjsonnet**, whose source code is bundled in the distributed NPM packages of @hanazuki/node-jsonnet, is licensed under the Apache License, Version 2.0 (See [third_party/jsonnet/LICENSE in this package](third_party/jsonnet/LICENSE) or [LICENSE file in the original repository](https://github.com/google/jsonnet/blob/master/LICENSE)). libjsonnet also bundles third-party software that is subject to other OSS licenses.