Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shahradelahi/node-vault
🔐 Modern client for the HashiCorp's Vault API
https://github.com/shahradelahi/node-vault
client hashicorp secrets typescript vault
Last synced: about 13 hours ago
JSON representation
🔐 Modern client for the HashiCorp's Vault API
- Host: GitHub
- URL: https://github.com/shahradelahi/node-vault
- Owner: shahradelahi
- License: mit
- Created: 2023-11-23T11:00:45.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-16T13:20:44.000Z (9 days ago)
- Last Synced: 2024-12-21T01:36:20.665Z (5 days ago)
- Topics: client, hashicorp, secrets, typescript, vault
- Language: TypeScript
- Homepage: https://npmjs.com/@litehex/node-vault
- Size: 269 KB
- Stars: 319
- Watchers: 7
- Forks: 18
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Node Vault
_node-vault_ is a Javascript HTTP client for [HashiCorp's Vault](https://developer.hashicorp.com/vault/api-docs) API
that allows you to have typesafe access to the API using [TypeScript](https://www.typescriptlang.org/)
and [Zod](https://github.com/colinhacks/zod).---
- [Features](#-features)
- [Installation](#-installation)
- [Usage](#-usage)
- [Init and unseal vault](#init-and-unseal-vault)
- [Create Key/Value V2 engine](#create-keyvalue-v2-engine)
- [Create, read, update, delete secrets](#write-read-and-delete-secrets)
- [Documentation](#-documentation)
- [Contributing](#-contributing)
- [License](#license)## 👀 Features
- Simple API
- Typesafe and Validated Requests from Zod
- Extendable using Custom Commands## 📦 Installation
```bash
npm install @litehex/node-vault
```## 📖 Usage
##### Init and unseal vault
```typescript
import { Client } from '@litehex/node-vault';// Get a new instance of the client
const vc = new Client({
apiVersion: 'v1', // default
endpoint: 'http://127.0.0.1:8200', // default
token: 'hv.xxxxxxxxxxxxxxxxxxxxx' // Optional in case you want to initialize the vault
});// Init vault
const init = await vc.init({ secret_shares: 1, secret_threshold: 1 });
console.log(init); // { data: { keys: [ ... ], keys_base64: [ ... ], ... } }// Set token
const { keys, root_token } = init;
vc.token = root_token;const unsealed = await vc.unseal({ key: keys[0] });
console.log(unsealed); // { data: { type: 'shamir', initialized: true, sealed: false, ... } }
```##### Create Key/Value V2 engine
```typescript
const mounted = await vc.mount({
mountPath: 'my-secret',
type: 'kv-v2'
});console.log(mounted); // { data: true }
const info = await vc.engineInfo({ mountPath: 'my-secret' });
console.log(info); // { data: { type: 'kv', options: { version: '2' }, ... } }
```##### Write, read and delete secrets
```typescript
const mountPath = 'my-secret';
const path = 'hello';const write = await vc.kv2.write({
mountPath,
path,
data: { foo: 'bar' }
});
console.log(write); // { data: { request_id: '...', lease_id: '...', ... } }const read = await vc.kv2.read({ mountPath, path });
console.log(read); // { data: { request_id: '...', lease_id: '...', ... } }const deleted = await vc.kv2.deleteLatest({ mountPath, path });
console.log(deleted); // { data: true }
```### 📚 Documentation
For complete usages, please dive into the [Wiki](https://github.com/shahradelahi/node-vault/wiki).
For all configuration options, please see [the API docs](https://www.jsdocs.io/package/@litehex/node-vault).
### 🤝 Contributing
You can contribute to this project by opening an issue or a pull request
on [GitHub](https://github.com/shahradelahi/node-vault). Feel free to contribute, we care about your ideas and
suggestions.### Relevant
- HashiCorp's Vault [API docs](https://developer.hashicorp.com/vault/api-docs)
- [Minimal CLI for K/V V2 engine](https://github.com/shahradelahi/vault-cli)### License
[MIT](LICENSE) © [Shahrad Elahi](https://github.com/shahradelahi)