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

@tapcart/app-studio

v0.1.6

Published

Tapcart WebBridge SDK

Downloads

58

Readme

Tapcart Codeblocks SDK

Tapcart Web Bridge enables web pages to render inside of Tapcart apps and synchronize state between the web and native layers, invoke native functionalities, and react to real-time updates from the native app.

Installation

All dependencies are already added into package.json. Install them using yarn.

yarn install

Building

Webpack and Babel are used to build both the vanilla and react versions of the SDK. Run the following command to build after editing src.

yarn build

The final build files are put in the dist folder.

Generating a new SDK version / Deploying

  1. brew install jq install a dependency for the shell scripts

  2. Make your changes, and update package.json to your new version.

  3. Run the following script to generate the necessary files prior to merging your code:

# staging
yarn new-version-staging

# prod
yarn new-version-prod
  • ENVIRONMENT: Must be one of: staging, prod
  1. Review the changes and commit to your branch, and create your PR

  2. Once merged to master, the code will be auto-uploaded to the staging GCS bucket, custom-blocks.tapcart.xyz, in the tapcart-backend-staging GCP project. This is done via the [Staging] Upload static files to GCS action

  3. To deploy to prod, you would run the [Production] Upload static files to GCS GitHub Action manually. This deploys to the prod GCS bucket custom-blocks.tapcart.com, in the tapcart-150607 GCP project.

  • Additional notes:

You can also run the [Staging] Upload static files to GCS GitHub Action from any feature branch as well, if you want to deploy to staging without merging. This can be useful for keeping the master branch clean. You would want to run the new-sdk-version.sh script prior to doing this, because all the GitHub Actions do is upload the contents of this repository. They will not generate files for you.

You'll need to manually add the changes messages to versions.json, if you want them. It's probably better to control what this messaging is manually, than read git commit messages / enforce them to be meaningful.

    {
      "tag": "1.6.0",
      "released": "2024-02-12T17:57:18.000Z",
      "release_notes": {
        "changes": [
          "COMMIT MESSAGE 1",
          "COMMIT MESSAGE 2"
        ]
      }
    }

Examples

All sample projects which use the SDK are located in the examples folder. These can be used for testing the SDK locally during development.

Vanilla

A sample server has been setup to serve the vanillaJS SDK. Once the SDK source files have been edited, run the following commands from root of the project.

yarn build
yarn serve-local

The server is setup with hot reloading so any updates to the SDK will be reflected automatically after running yarn build.

Example Usage

<!-- index.html -->

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>SDK Test HTML</title>
        <script type="text/javascript" defer src="http://localhost:3000/tapcart.js"></script>
        <script type="text/javascript" defer src="script.js"></script>
    </head>
    <body id="body" style="height: 100vh;">
        <div id="tapcart-root"></div>
    </body>
</html>
// script.js

(function () {
	let merchantFunc = Function(`Tapcart.registerEventHandler("cart/updated",function(eventName,eventData){ console.log("Event Handler:", eventName  ,eventData); })`);
	Tapcart.registerMerchantJavascript(merchantFunc);
})()

// Test script - Simulates what app can/needs to do after loading codeblock/webview
setTimeout(function () {
	Tapcart.init({ variables: { firstName: "Gopi" } });
	Tapcart.triggerEvent("cart/updated",{"total": "10.00",currency: "USD"})
},3000);

React

To test the react SDK, yalc is used to facilitate local npm package linking.

1.) First, install yalc globally

npm i -g yalc

2.) Build/Publish to local yalc repo. Run following from project root

yarn generate-react-library
yarn publish-local

3.) Run an example react app from ../examples/react/ directory

yalc add @tapcart/webbridge-react
yarn install
yarn run dev

4.) To reflect changes made to SDK in the example React App

  • Build & Publish from project root
cd ../examples/react/
yarn run dev                #start the dev server 
cd tapcart-webbridge
yarn generate-react-library #build the changes
yarn publish-local          #publish the changes
# the dev server will notice updates to the package and hotreload!

Example Usage

// App.js

import {TapcartProvider,createClient} from "@tapcart/webbridge-react";
import InnerComponent from "./InnerComponent";

function App() {

  const tapcartClient = createClient({test: false});

  return (
    <div className="App">
      <WebbridgeProvider webbridgeClient={webbridgeClient}>
        <TapcartBlock /> {/* this is your apps main entry point*/}
      </WebbridgeProvider>
    </div>

  );
}

export default App;
// InnerComponent.js

import {useActions} from "@tapcart/webbridge-react";

function InnerComponent(props) {
    let {openProduct,openCollection,openCart} = useActions();
    return <button onClick={() => openProduct("1232242232132")}>Inner Component</button>
}

export default InnerComponent;

Docs

To see the public facing documentation : https://docs.tapcart.com/docs/app-actions

The SDK acts as a communication bridge between the native iOS/Android Webviews and the Web Apps built by the merchants. This two way communication is powered by events and actions.

Actions allow the SDK users to interact with native app functionality via JS. The following actions are supported currently:

Tapcart.actions.addToCart(...)
Tapcart.actions.applyDiscount(...)
Tapcart.actions.applyGiftCard(...)
Tapcart.actions.cartBuyerIdentity(...)
Tapcart.actions.cartUpdateDeliveryOptions(...)
Tapcart.actions.getCustomerIdentity()
Tapcart.actions.openCart()
Tapcart.actions.openCollection(...)
Tapcart.actions.openProduct(...)
Tapcart.actions.openScreen(...)
Tapcart.actions.removeFromCart(...)
Tapcart.actions.renderView()
Tapcart.actions.scrollToBlockBottom()
Tapcart.actions.scrollToBlockTop()
Tapcart.actions.showToast(...)
Tapcart.actions.updateCartAttributes(...)
Tapcart.actions.updateCartNote(...)
Tapcart.actions.updateView(...)
Tapcart.actions.vault.initialize(...)

Events allow SDK users to respond to changes in the native apps; The following events are supported currently:

  • cart/updated
  • discount/applied
  • giftcard/applied
  • product/opened
  • collection/opened