1.0.12 • Published 3 months ago

@storecraft/sdk v1.0.12

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

Storecraft Official Universal Javascript SDK

This is the official storecraft universal javascript SDK which is fetch based, which means you can you it both at browser and at backend runtimes such (node / bun / deno)

It will allow you to fetch / mutate all of the resources at the backend in a convenient manner with javascript, such as:

collections

products, collections, auth_users, customers, orders, discounts, storefronts, shipping, tags, posts, notifications, templates, extensions, images

Auth

Perform authentication such as signin / signup / api-key

Checkout

Perform checkout create / complete

Storage

Perform storage operations such as put / get / delete

Payments

Perform payments status-check / invoke-action

Statistics

  • Query some basic statistics about orders in a time span
  • Query count of items in collections

AI

Speak with a storecraft agent (Supports streaming :))

Semantic / Similarity Search

Search Storecraft with AI for similar products, discounts, collections, shipping based on a prompt.

Quick Search

List super lite search results with id, handle, title over most resources

Start by installing,

Plus, everything is typed so you dont have to guess any parameter or queryable key

npm i @storecraft/sdk

Authentication

Authentication and authorization is required for some resources, such as:

  • Upserting / Removing (mutations) resources
  • Querying a customer orders

Besides that, most of the resources are public and do not require authentication.

There are two strategies for authentication:

Api Key Authentication

import { StorecraftSDK } from '@storecraft/sdk'

const sdk = new StorecraftSDK(
  {
    backend: 'http://localhost:8000', 
    auth: {
      apikey: <YOUR-API-KEY>
    }
  }
)

JWT Authentication

You can sign in, and the sdk will save the auth result ans will re-authenticate with refresh token when needed.

import { StorecraftSDK } from '@storecraft/sdk'

const sdk = new StorecraftSDK(
  {
    backend: 'http://localhost:8000', 
  }
);

const auth_result = await sdk.auth.signin(email, password);

You, can also instantiate the sdk with previous authentication information like so:

import { StorecraftSDK } from '@storecraft/sdk'

const sdk = new StorecraftSDK(
  {
    backend: 'http://localhost:8000', 
    auth: {
      access_token: <OPTIONAL-ACCESS-TOKEN>,
      refresh_token: <OPTIONAL-REFRESH-TOKEN>,
    }
  }
)

subscribe to JWT auth updates

You can subscribe to auth updates like so:

import { StorecraftSDK } from '@storecraft/sdk'

const sdk = new StorecraftSDK(
  {
    backend: 'http://localhost:8000', 
  }
);

sdk.auth.add_sub(
  ({ auth: ApiAuthResult, isAuthenticated: boolean }) => {
    // Do something, like save locally
  }
);

const auth_result = await sdk.auth.signin(email, password);
const auth_result = await sdk.auth.signout();

Querying

Here are some examples for querying.

  • Every key and string in the example below is fully typed with typescript,
  • so you get intellisense out of the box for better developer experience
  • And, you don't have to guess anything
import { StorecraftSDK } from '@storecraft/sdk'

const sdk = new StorecraftSDK();

const products: ProductType[] = await sdk.products.list(
  {
    expand: ['collections', 'variants'],
    sortBy: ['updated_at', 'id'], // all keys will show up in intellisense
    order: 'desc',
    startAt: [
      ['updated_at': '2024-03-24'],
    ],
    limit: 5,
    vql: '(keyword1 | keyword2) -(keyword3)'
  }
)

Or,

import { StorecraftSDK } from '@storecraft/sdk'

const sdk = new StorecraftSDK();

const collections: CollectionType[] = await sdk.collections.list(
  {
    equals: [['active': true]]
    limit: 5,
  }
);
Author: Tomer Shalev (tomer.shalev@gmail.com)
1.0.11

3 months ago

1.0.12

3 months ago

1.0.9

4 months ago

1.0.8

4 months ago

1.0.7

4 months ago

1.0.6

6 months ago

1.0.5

7 months ago

1.0.10

4 months ago

1.0.2

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.1

8 months ago

0.1.0

1 year ago