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

@paypal/checkout-components

v5.0.308

Published

PayPal Checkout components, for integrating checkout products.

Downloads

2,512

Readme

PayPal Checkout

build status code coverage npm version apache license

A set of components allowing easy integration of PayPal Buttons and PayPal Checkout into your site, powered by zoid.

Dev Docs

See developer.paypal.com/docs/checkout

Issues

Please submit any issues about the JS SDK here: https://github.com/paypal/paypal-js/issues


Development

Please feel free to follow the Contribution Guidelines to contribute to this repository. PRs are welcome, but for major changes please raise an issue first.

Quick Setup

Set up your env:

npm install

Run tests:

npm test

Run in dev mode:

npm run dev

Testing Tasks

npm test

Runs all testing tasks lint, flow, karma, jest-ssr, jest-screenshot, & check-size.

| Flags | Description | | ------------- | -------------------------------------------- | | --clear-cache | Clear Babel Loader and PhantomJS cache | | --debug | Debug mode. PhantomJS, Karma, and CheckoutJS | | --quick | Fastest testing. Minimal output, no coverage | | --browser | Choose Browser |

 

lint

npm run lint

npm run lint -- --fix
# attempt to automatically fix any problems

Runs eslint using definitions extended from Grumbler-Scripts.

flow

npm run flow

Checks for typing issues using Flow. Prior to running this task, flow-typed should be run to generate type interfaces for the various 3rd-party libraries we use.

karma

npm run karma

npm run karma -- --keep-open
# keeps the test browser window open to allow debugging
npm run karma -- --capture-console
# dumps the browser's console output into the terminal

Runs Karma tests using the Mocha framework. Responsible for running the test/e2e & test/integration directories.

jest-ssr

npm run jest-ssr

Checks for the correct rendering of components on the server-side using Jest.

jest-screenshot

npm run jest-screenshot

Uses Puppeteer & Jest to take screenshots and checks against existing views to look for discrepancies. Tests are defined in test/screenshot/config.js.

check-size

npm run check-size

Checks to make sure that the compiled & gzipped bundle doesn't exceed the recommended size limit.

Releasing

This package is published weekly, Every Wednesday. Please view our Changelog to stay updated with bug fixes and new features.

Logo Strategy with paypal-sdk-logos

Our usage of svg logos is optimized for performance. Here's how it works for the two-phased render for the Buttons component:

  • First Render - Buttons are first rendered on the client-side inside an <iframe> tag using the code bundled inside the JS SDK script. This <iframe> tag has no src attribute at this point in the rendering life cycle. We leverage the __WEB__ global variable to determine if we are rendering client-side or server-side. The __WEB__ global variable will equal true when rendering client-side. To minimize the bundle size of the JS SDK script, we load these svg logos from the www.paypalobjects.com CDN as external images (ex: <PayPalLogoExternalImage />).

  • Second Render - The second phase of rendering happens on the server-side. This <iframe> tag is fully rendered by setting the src attribute and making an http request to the server to populate the contents which are securely hosted by PayPal's servers on www.paypal.com. The same code in this repo is used to render the buttons on the server-side. To ensure there are no issues with the logos, we have decided to inline the svg code for this server-side render (ex: <PayPalLogoInlineSVG />). The __WEB__ global variable is set to false to control what code executes during the server render.