open-index/open-npm huggingface dataset:
npm package: @ocap/qldb
Description: This is a simplified solution of the QLDB driver for AWS
Latest version: 3.1.2

# QLDB Bridge for Node
This is a simplified solution of the QLDB driver for AWS

## How to use
- Import QLDB and instantiate a client
- Run queries using `execute`

```
import QLDB from 'qldb';

const QuantumClient = new QLDB({
  accessKey,
  secretKey,
  region,
  ledger,
});

// Later in your code
const stuff = await QuantumClient.execute('SELECT * from Stuff');
```

### Inserting Documents
To insert a document you need to convert it to ion structures as describe [here](http://amzn.github.io/ion-docs/docs/spec.html). This package provides a helper to convert javascript objects and array into ion structures.

- Import ionize from qldb
- Pass an array or object through the function
- Run an insert or update statement

```
import QLDB, { ionize } from 'qldb';

const QuantumClient = new QLDB({
  accessKey,
  secretKey,
  region,
  ledger,
});

// Later in your code
const doc = { id: 'someId', key: 'value', n: 1, fl: 1.2, obj: { s: 's' }, arr: [1, 2] };
const stuff = await QuantumClient.execute(`INSERT INTO collection ${ionize(doc)}`);
```

### Acid Transactions
To run multiple operations within an acid transaction, use the `transaction` command and pass a function to it. Whatever you return from the transaction function will be the result set from the transaction operation. All data created during the transaction will return an object as it would during normal execution.

```
import QLDB, { ionize } from 'qldb';

const QuantumClient = new QLDB({
  accessKey,
  secretKey,
  region,
  ledger,
});

// Later in your code
const docs = [{ id: 'someId', value: '1' }, { id: 'otherId', value: '2' }];
const [doc1, doc2] = await QuantumClient.transaction((txn) => {
  const d1 = await txn.execute(`INSERT INTO collection ${ionize(docs[0])}`);
  const d2 = await txn.execute(`INSERT INTO collection ${ionize(docs[1])}`);
  return [d1, d2];
});

// NOTE: You can iterate and use a Promise.all as well if you don't care to use the output of one entry for another
```


## Validating documents
To validate documents as described [here](https://s3.amazonaws.com/amazon-qldb-docs/verification.digest.html) you can use the Quantum Client's `validate` function. The validate function can only take a query string that returns QLDB history.

```
import QuantumClient from './your/configured/QLDB/instance';

const isValid = await QuantumClient.validate(`SELECT * FROM _ql_committed_Vehicle WHERE data.VIN = '1HVBBAANXWH544237'`);
```
npm package: @ocap/schema
Description: CAUTION: please do not update since we have manual edits.
Author: wangshijun
Latest version: 1.28.6

# OCAP GraphQL Schama

## How to Update?

CAUTION: please do not update since we have manual edits.

```shell
npm install -g get-graphql-schema
get-graphql-schema https://xenon.abtnetwork.io/api > lib/schema.graphql
```
npm package: @ocap/statedb
Description: Defines the basic interface for OCAP StateDB
Author: wangshijun
Latest version: 1.29.24

# OCAP StateDB

Defines the abstract interface of OCAP StateDB, must be implemented with an actual statedb, please checkout following packages:

- `@ocap/statedb-memory`
- `@ocap/statedb-dolt`

## Usage

```shell
bun install @ocap/statedb-memory
```

Then:

```javascript
const MemoryStateDB = require('@ocap/statedb-memory').default;

const statedb = new MemoryStateDB();

statedb.account.create(address, attrs, context);
statedb.account.get(address);
statedb.account.update(address, updates, context);

statedb.asset.create(address, attrs, context);
statedb.asset.get(address);
statedb.asset.update(address, updates, context);

statedb.delegation.create(address, attrs, context);
statedb.delegation.get(address);
statedb.delegation.update(address, updates, context);

statedb.tx.create(hash, attrs, context);
statedb.tx.get(hash);
statedb.tx.find(conditions);
```