@lighttable/lighttable
Version:
Universal SDK to access LightTable (compatible with Node.js, React, Next.js, Vite).
189 lines (147 loc) • 4.04 kB
Markdown
# @lighttable/lighttable
Universal SDK to access the LightTable (compatible with Node.js, React, Next.js, Vite).
## Installation
```bash
npm install @lighttable/lighttable
```
## Usage
### Node.js / Vite / Next.js / React
```js
import LightTable from '@lighttable/lighttable';
// or in CommonJS:
// const LightTable = require('@lighttable/lighttable');
const lightTable = new LightTable({
baseUrl: 'https://lb01.genielabel.com/
sdk/v1/lighttable',
store: 'YOUR_STORE_ID',
});
// Example of a chainable query
const data = await lightTable
.collection('myCollection')
.find()
.filter({ status: 'active' })
.sort({ createdAt: -1 })
.limit(10)
.skip(20)
.select('name age')
.lean()
.exec();
console.log(data);
const products = await lightTable
.products()
.findOne({ slug: 't-shirt-nike17991579' })
.limit(2)
.thumbnailSize('200x200')
.mainImageSize('500x500')
.lean(); // chainables: sort, skip, filter, select, lean, etc.
/* returns
{
"images": [
{
"thumbnail": "https://example.com/jpg",
"url": "https://example.com/jpg",
"original": "https://example.com/jpg"
}
],
"price": 10000,
"collections": [
{
"_id": "6827857adae4fab1d79f3c51",
"title": "Fashion"
}
],
"_id": "6827853bdae4fab1d79f3c26",
"name": "T-shirt nike",
"slug": "t-shirt-nike57814059",
"taxable": true,
"formaterPrice": "10.000,00 CDF"
}
*/
```
## Features
- Chainable API (like Mongo or Mongoose)
- Supports all Mongoose query options: `filter`, `sort`, `limit`, `skip`, `select`, `lean`, etc.
- Works in Node.js, React, Next.js, Vite (SSR and browser)
- Token management (JWT)
- File upload and signed URL support
## Example: Checkout
```js
import LightTable from '@lighttable/lighttable';
// or in CommonJS:
// const LightTable = require('@lighttable/lighttable');
const lightTable = new LightTable({
baseUrl: 'https://mfumu.labelflow.co/sdk/v1/lighttable',
store: 'YOUR_STORE_ID',
});
// Example: Create a checkout link for a product or service
const checkoutResult = await lightTable.checkout({
isInvoice: false, // false: does not automatically create an invoice after payment
no_auth: true, // true: customer can pay without authentication
items: [
{
product_reference: "_id:YOUR_PRODUCT_ID", // ID of the product or service
quantity: 1
}
]
});
console.log(checkoutResult);
/* Example output:
{
"checkout": {
"taxable": 0,
"close": false,
"checkoutType": "order",
"lineItemQuantity": 1,
"subTotal": 3000,
"taxPercentage": 0,
"discountValue": null,
"shippingPrice": 0,
"tax": 0,
"deliverable": false,
"comments": [],
"_id": "68ec95c225fcba531f7d0752",
"reference": "5337390961",
"currency": "CDF",
"items": [
{
"modifiers": [],
"choises": [],
"_id": "68ec95c225fcba531f7d0753",
"currency": "CDF",
"name": "Consultancy 1",
"price": 3000,
"quantity": 1
}
],
"orderId": null,
"checkoutId": "a37945c4-7094-46c5-9244-068f943fa7c3",
"paid": false,
"store": "67894cd67908d7b5057e75d4",
"total": 3000,
"created": "2025-10-13T06:01:38.226Z",
"__v": 0
},
"link": "https://example.com/checkout/a37945c4-7094-46c5-9244-068f943fa7c3"
}
*/
console.log("Link for customer to proceed with payment:", checkoutResult.link);
// The `link` field contains the URL you can send to the customer to complete payment.
```
## Compatibility
- Node.js >= 14
- React >= 17
- Next.js >= 12
- Vite >= 2
## Dependencies
- [axios](https://www.npmjs.com/package/axios)
## Example: Authentication with OTP
```js
await lightTable.authOtp({ type: 'email', email: 'user@email.com' });
// ...user receives OTP...
const result = await lightTable.verifyOtp({ code: '1234', email: 'user@email.com' });
console.log(result.token); // JWT token
```
## License
MIT
## Repository
[https://github.com/genielabel/lightTable](https://github.com/genielabel/lightTable)