0.0.56 • Published 4 months ago

bigrequest v0.0.56

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

BigRequest

A typesafe, serverless-friendly Node.js HTTP request client for the BigCommerce API. Includes OAuth2 authorization flows for Single-Click App developers.

Overview

This module is available in two formats:

  • ES Module: dist/index.mjs
  • CommonJS: dist/index.js

Requirements

  • Node.js: >=18

Installation

npm i bigrequest

Usage

// Typescript
import bigrequest from 'bigrequest';
// CommonJS
const bigrequest = require('bigrequest');
// ES Module
import bigrequest from 'bigrequest';

REST Management API

const bc = bigrequest.rest({
  storeHash: 'your_store_hash',
  accessToken: 'your_access_token',
});

// Use the REST client
const product = await bc.v3.GET('/catalog/products/{product_id}', {
  params: {
    header: { Accept: 'application/json' },
    path: { product_id: 111 },
  },
});

/**
 * product: {
 *   data:
 *     | {
 *         data: {
 *           id?: number | undefined;
 *           name: string;
 *           type: "physical" | "digital";
 *           sku?: string | undefined;
 *           ...
 *         };
 *         meta: {};
 *       }
 *     | undefined;
 *   errors:
 *     | {
 *         status?: number | undefined;
 *         title?: string | undefined;
 *         type?: string | undefined;
 *         instance?: string | undefined;
 *       }
 *     | undefined;
 *   response: Response;
 * }
 */

// Creating an image using FormData
const categoryImage = await bc.v3.POST('/catalog/categories/{category_id}/image', {
  params: {
    header: {
      'Content-Type': 'multipart/form-data',
      Accept: 'application/json',
    },
    path: { category_id: 11 },
  },
  body: {
    image_file: 'path/to/image.jpg',
  },
  bodySerializer(body) {
    const fd = new FormData();

    /**
     * body: {
     *   image_file: "path/to/image.jpg"
     * }
     */
    for (const [k, v] of Object.entries(body)) {
      const blob = new Blob([fs.readFileSync(v)]);

      fd.append(k, blob, 'DESIRED_FILE_NAME.jpg');
    }

    return fd;
  },
});

OAuth

const oauth = bigrequest.oauth({
  clientId: 'YOUR_CLIENT_ID',
  clientSecret: 'YOUR_CLIENT_SECRET',
  authCallback: 'https://devtools.bigcommerce.com/my/apps',
});

// Receive the auth callback
const accessTokenResponse = await oauth.authorize({
  code: 'code',
  context: 'context',
  scope: 'scope',
});

/**
 * accessTokenResponse: {
 *   scope: string;
 *   context: string;
 *   access_token: string;
 *   user: {
 *     id: number;
 *     username: string;
 *     email: string;
 *   }
 *   account_uuid: string;
 * }
 */

// Receive the load/uninstall/remove_user callback
const signedJwtPayload = await oauth.verify('signed_payload_jwt');

/**
 * signedJwtPayload: {
 *   user: {
 *     id: number;
 *     email: string;
 *     locale: string;
 *   }
 *   aud: string;
 *   iss: string;
 *   iat: number;
 *   nbf: number;
 *   exp: number;
 *   jti: string;
 *   sub: string;
 *   owner: {
 *     id: number;
 *     email: string;
 *   }
 *   url: string;
 *   channel_id: number | null;
 * }
 */

Contributing

See CONTRIBUTING.md

0.0.56

4 months ago

0.0.54

4 months ago

0.0.55

4 months ago

0.0.53

5 months ago

0.0.52

5 months ago

0.0.51

5 months ago

0.0.50

5 months ago

0.0.49

6 months ago

0.0.48

8 months ago

0.0.46

10 months ago

0.0.47

9 months ago

0.0.44

10 months ago

0.0.45

10 months ago

0.0.43

10 months ago

0.0.42

11 months ago

0.0.40

12 months ago

0.0.41

11 months ago

0.0.39

12 months ago

0.0.37

1 year ago

0.0.38

1 year ago

0.0.36

1 year ago

0.0.35

1 year ago

0.0.34

1 year ago

0.0.33

1 year ago

0.0.32

1 year ago

0.0.31

1 year ago

0.0.30

1 year ago

0.0.29

1 year ago

0.0.28

1 year ago

0.0.26

1 year ago

0.0.27

1 year ago

0.0.25

1 year ago

0.0.23

1 year ago

0.0.24

1 year ago

0.0.22

1 year ago

0.0.21

1 year ago

0.0.20

1 year ago

0.0.19

1 year ago

0.0.18

1 year ago

0.0.16

2 years ago

0.0.17

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago

0.0.0-rc.1

2 years ago