npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@builton/core-sdk

v4.2.4

Published

Builton JavaScript SDK.

Downloads

67

Readme

Travis David GitHub release license

Builton SDK

Builton offers a platform as a service that digitizes core business functions and optimizes resource allocation with baked-in machine learning capabilities. This SDK gives you access to our platform's building blocks and will help you implement its API in a Javascript or browser environment. Get instant access to modules like Payments, Messaging Tools, User Management and Authentication, Scheduling, Resource Allocation and more.

Builton logo

If you are looking for the service python SDK, take a look at it on Github and on PyPI

Requirement

Install

From the unpkg CDN

<script src="https://unpkg.com/@builton/[email protected]/dist/main.bundle.js"></script>

From npm

npm install @builton/core-sdk

Getting started

new Builton({ apiKey, bearerToken })

Initialises a new instance of Builton configured with your application apiKey and a bearerToken token from an authentication provider (optional).

  • apiKey {String}: Your attributed Builton API Key.
  • bearerToken {String} - (optional): Your JSON Web Token (JWT), from your authentication provider.

Note: Accessing the API without a bearerToken will limit the number of endpoints and information you can access.

Example (using Auth0's Lock library as an authentication provider)

var clientId = "YOUR_AUTH0_APP_CLIENTID";
var domain = "YOUR_DOMAIN_AT.auth0.com";
var lock = new Auth0Lock(clientId, domain, {
  auth: {
    responseType: 'token id_token',
    params: {scope: 'openid app_metadata user_metadata'}
  },
  allowedConnections: ['facebook'],
  container: 'auth0Root'
});

lock.on("authenticated", function(authResult) {
  lock.getUserInfo(authResult.accessToken, function(err, profile) {
    if (err) {
      // Handle error
      return;
    }

    var builton = new Builton({
      apiKey: 'YOUR_Builton_API_KEY',
      bearerToken: authResult.idToken
    });

    var loginBody = {
      first_name: profile.given_name,
      last_name: profile.family_name,
    };

    builton.authenticate.login(loginBody, {}, function(err, user, raw) {
      // The raw parameter contains the full response of the query, it's optional but can be useful to access the response's headers.
      if (err) {
        // Handle error
        return;
      }
    
      // Update DOM
    });
  });
});

Example (using Firebase Authentication's pre-built UI as an authentication provider)

[...]
<div id="firebaseui-auth-container"></div>
<script src="https://unpkg.com/@builton/core-sdk@latest/dist/main.bundle.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.5.4/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.5.4/firebase-auth.js"></script>
<script src="https://cdn.firebase.com/libs/firebaseui/3.1.1/firebaseui.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/3.1.1/firebaseui.css" />
[...]
firebase.initializeApp({
  apiKey: "YOUR_FIREBASE_API_KEY",
  authDomain: "YOUR_FIREBASE_DOMAIN",
});

var ui = new firebaseui.auth.AuthUI(firebase.auth());
var uiConfig = {
  callbacks: {
    signInSuccessWithAuthResult: function(authResult) {
    var phoneNumber = authResult.user.phoneNumber;
    authResult.user.getIdToken().then((idToken) => {
      var builton = new Builton({
        apiKey: config.apiKey,
        bearerToken: idToken,
      });
      const body = {
        first_name: 'demo',
        last_name: 'demo',
      };
      builton.users.authenticate(body).then((user) => {
        // Update DOM
      }).catch(console.warn);
    });
    // User successfully signed in.
    // Return type determines whether we continue the redirect automatically
    // or whether we leave that to developer to handle.
    return false;
    },
  },
  signInOptions: [
    // Leave the lines as is for the providers you want to offer your users.
    firebase.auth.PhoneAuthProvider.PROVIDER_ID
  ],
};

Example: Getting a paginated item

builton.products.get({ size: 10, page: 0 }).then(pageProduct => {
  // pageProduct.current contains the first page.
  // pageProduct.page contains the current page number.
  // pageProduct.paginationTotal contains the total number of item you can paginate through.
  // pageProduct.next() will update `pageProduct.current` and `pageProduct.page` with the next page.
  // pageProduct.previous() will update `pageProduct.current` and `pageProduct.page` with the previous page.
  // pageProduct.goToPage(pageNumber) will update `pageProduct.current` and `pageProduct.page` with a specified page.
  // The `next`, `previous`, and `goToPage` functions accept a callback and return a Promise.
});

Example: Fetching and updating payment methods

Using a callback:

builton.paymentMethods.get({ size: 5 }, function(err, page) {
  const firstPaymentMethod = page.current[0];
  firstPaymentMethod.update({
    token: ':StripeTokenId:'
  });
});

Using promises:

builton.paymentMethods.get({ size: 5 }).then(page => {
  const firstPaymentMethod = page.current[0];
  firstPaymentMethod.update({
    token: ':StripeTokenId:'
  });
});

Using async/await:

// This needs to be within in an `async` function
const pagePaymentMethods = await builton.paymentMethods.get({ size: 5 });
const firstPaymentMethod = pagePaymentMethods.current[0];
firstPaymentMethod.update({
  token: ':StripeTokenId:'
});

Example: Updating a payment method by id

builton.paymentMethods.update(':paymentMethodId:', {
  token: ':StripeTokenId:'
});

Using the set method:

const paymentMethod = builton.paymentMethods.set(':paymentMethodId:');
paymentMethod.update({
  token: ':StripeTokenId:'
});

Example: Using the set methods:

The set method allows you to create an object without fetching it from the api. I can be useful when working with stored data for example.

const paymentMethod = builton.paymentMethods.set(':paymentMethodId:');
paymentMethod.update({
  token: ':StripeTokenId:'
});

With multiple payment methods:

const paymentMethods = builton.paymentMethods.set([':paymentMethodId1:', ':paymentMethodId2:']);
paymentMethods[0].update({
  token: ':StripeTokenId:'
});

With full props:

const paymentMethod = builton.paymentMethods.set({<paymentMethodJsonObject>});
paymentMethod.update({
  token: ':StripeTokenId:'
});

Example: Uploading an image

await b.images.create({ imageData, isPublic: true });

See the full example for more details.

Issue Reporting

If you have found a bug or if you have a feature request, please report them to this repository's issues section.

License

This project is licensed under the MIT license. See the LICENSE file for more info.