1
0
mirror of https://github.com/vercel/commerce.git synced 2025-03-14 22:42:33 +00:00

1305 Commits

Author SHA1 Message Date
kibo-kevinwatts
3a69dbb5b0
fix(ckibocommerce customer endpoint): check if shopper cookie is anonymous before calling kibo api () 2021-12-16 11:02:46 -03:00
Maaz
2271864057
Update keen-slider ()
Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-12-15 14:24:06 -03:00
kibo-kevinwatts
9a4772cdb4
feat(provider): Implement Kibo Commerce provider ()
* Icky 161 folder and env setup ()

* folder and env setup

* codegen.json headers removed

Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>

* Feature/icky 194 ()

* folder and env setup

* codegen.json headers removed

* use-cart code flow updated

* use-cart code flow updated

* Implemented get-cart functionality

* removed unused file

* getAnonymousShopperToken function added

* normalization mapping updated

* PR points resolved

* Anonymous shopper token query added

* getAnonymousShopperToken function added

* Anonymous shopper token query added

Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>

* Icky 175 ()

* folder and env setup

* codegen.json headers removed

* icky-175-get-site-info

* PR comments resolved

* update category Id

Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>

* Icky-169-LogIn ()

* Update README.md

* Initial Commit

* Commited Keys

* GraphQL Changes

* GraphQL Query

* Final Changes

* Changed login.ts

* Made changes in login.ts

* Final Changes

* Refactored login.ts

* SignUp Initial Checkin

* logout Initial

* Customer Account Initial Commit

* Logout - deleted cookie

* Reverted ReadMe and UserNav file

* Final Changes

* Resolved comments

* Resolved comments 1

* Resolved comments 2

* Resolved comments 3

* Resolved comments 4

Co-authored-by: SushantJadhav <Sushant.Jadhav@kibocommerce.com>

* ICKY-166-getProducts-and-getProduct ()

* GetProduct Initial Commit

* Passed productCode as Slug to get-product

* Moved currencyCode in Config file

* Icky 173 ()

* Initial commit related to getAllPages

* Initial Changes

* Making documentListName configurable

* fixing dynamic page rendering and adding typescript code

Co-authored-by: amolnadagonde <amol.nadagonde@kibocommerce.com>
Co-authored-by: kibo-sushant <sushant.jadhav@blueconchtech.com>

* Feature/icky 176 ()

* GetProduct Initial Commit

* addItemToCart function implemneted

* Add Item to cart functionality implemented

* ICKY-166-getProducts-and-getProduct ()

* GetProduct Initial Commit

* Passed productCode as Slug to get-product

* Moved currencyCode in Config file

* Icky 173 ()

* Initial commit related to getAllPages

* Initial Changes

* Making documentListName configurable

* fixing dynamic page rendering and adding typescript code

Co-authored-by: amolnadagonde <amol.nadagonde@kibocommerce.com>
Co-authored-by: kibo-sushant <sushant.jadhav@blueconchtech.com>

* addItemToCart function implemneted

Conflicts resolved

* Add Item to cart functionality implemented

* booleans removed from query

* cart size option enabled

* updated addItem for with and without variants products

Co-authored-by: kibo-sushant <sushant.jadhav@blueconchtech.com>
Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>
Co-authored-by: kibo-sushant <89385472+kibo-sushant@users.noreply.github.com>
Co-authored-by: kibo-kevinwatts <85258296+kibo-kevinwatts@users.noreply.github.com>
Co-authored-by: amolnadagonde <amol.nadagonde@kibocommerce.com>

* Removed types from schema.d.ts ()

* Final Changes ()

* Icky 177 ()

* addItemToCart function implemneted

Conflicts resolved

* Add Item to cart functionality implemented

* remove Item from cart implemented

* removed unused code

Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>

* Icky 178 - Update Cart Quantity implemented ()

* update cart quantity implemented

* add item to cart bug fixed

Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>

* Icky 182 ()

* initial commit

* useSearch hook

* remove extra spaces

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* initial commit

* useSearch hook

* remove extra spaces

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* changes in product-search-vars

* remove unwanted boolean

* Feature/icky 179 ()

* initial commit

* useSearch hook

* remove extra spaces

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* initial commit

* useSearch hook

* remove extra spaces

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* changes in product-search-vars

* remove unwanted boolean

* initial commit

* updated Provider

* usewishlist/getwishlist

* changes in provider.ts

* initial commit

* useSearch hook

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* initial commit

* useSearch hook

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* initial commit

* usewishlist/getwishlist

* updated Provider

* changes in provider.ts

* normalize wishlistitem

* changes in get-customer-account

* remove unwanted code

* resolve empty wishlist case

* resolve pr comments

Co-authored-by: kibo-sushant <sushant.jadhav@blueconchtech.com>

* token encoding and decoding fixed ()

Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>

* Feature/icky- 180 & 181 ()

* initial commit

* useSearch hook

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* initial commit

* useSearch hook

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* usewishlist/getwishlist

* changes in provider.ts

* changes in get-customer-account

* initial commit

* useSearch hook

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* initial commit

* useSearch hook

* revert pages and component changes

* remove extra spacing in search.tsx

* changes in catalog/products and product-search-vars

* usewishlist/getwishlist

* changes in provider.ts

* remove unwanted code

* initial commit

* resolve pr comments

* changes in add-item

* remove wishlist fragment

* remove item from wishlist

* changes in normalize.ts

* changes in additemtowishlist mutation

* resove pr comments

* Feature/icky 291 ()

* Kibo API authentication helper handling oauth token generation / refresh and making auth ticket available to process via next server runtime config

* Update .env template with placeholder for Kibo Auth Url

* resolve ICKY-275 ()

* Fix/icky 276 ()

* remove Item from cart implemented

* update cart quantity implemented

* removed unused code

* ICKY 176 and 263 implemented

* ICKY 263 removed

* PR points resolved

Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>

* ICKY-263 ()

* ICKY-263

* resolve pr comments

* resolve pr comments for customer typescript

* docs: update kibo commerce readme with env details ()

* resolve icky-264 ()

* chore: remove extra field from .env.template

* chore: remove extra .vscode launch json file

* chore: cleanup test message from kibocommerce fork

* chore(docs): remove extra field from .env template and .env related docs

* chore: remove test data json file

* chore: delete yarn.lock

* refactor: remove unused fetch from kibo config, remove unused CommerceProvider

* refactor: rename queries and util modules for consistency

* chore: add checkout related api noop handlers and hooks

* chore: revert modified core files

* chore(config): add kibo production sandbox cdn to image domains config

* fix: page normalizer and query for static pages

* chore: remove commented code and unnecessary imports

* fix(module paths): switch framework alias for relative path

Co-authored-by: kibo-chandradeeptalaha <89371824+kibo-chandradeeptalaha@users.noreply.github.com>
Co-authored-by: Chandradeepta <43542673+Chandradeepta@users.noreply.github.com>
Co-authored-by: kibo-geetanshuchhabra <89399259+kibo-geetanshuchhabra@users.noreply.github.com>
Co-authored-by: kibo-sushant <89385472+kibo-sushant@users.noreply.github.com>
Co-authored-by: SushantJadhav <Sushant.Jadhav@kibocommerce.com>
Co-authored-by: amolnadagonde <amol.nadagonde@kibocommerce.com>
Co-authored-by: kibo-sushant <sushant.jadhav@blueconchtech.com>
Co-authored-by: kibo-amolnadagonde <75060520+kibo-amolnadagonde@users.noreply.github.com>
2021-12-15 10:25:09 -03:00
Tomek Niezgoda
d77d000431
Spree Commerce Provider ()
* Include @spree/storefront-api-v2-sdk

* Add basic Spree framework structure

* Add Spree as allowed Framework

* Fetch product images, standardize API fetch using Spree SDK

* Include slug and path in products

* Fetch single product during build time

* PLP with searching by category

* Fetch Spree Categories and Brands

* Sort PLP

* Search products by name

* Fix option values collection

* Fix hasNonMasterVariants

* Sort Categories and Brands

* Add configuration to show product options when there's one variant available

* Enable text search for the Spree Framework

* Allow removing line items

* Allow updating line item quantity

* Add __typename to variant options to allow adding the selected variant to the cart

* Use fetch and Request from node-fetch in Spree SDK

* Update Spree SDK fetcher

* Show placeholder message for /chechout and adjust api fetcher type

* Use kebab case instead of camel case

* Remove outdated comments

* Remove outdated comment

* Resolve isColorProductOption duplication

* Type Spree variants and line items and temporarily remove height, width and depth

* Remove outdated comment

* Update comments about cart discounts

* Remove 'spree' prefix from isomorphicConfig and add lastUpdatedProductsPrerenderCount

* Implement getAllProductPaths to prerender some products during build time

* Adjust fetchers to the latest Spree SDK interface

* Add types to Spree taxons mapping

* Revert port change in package.json scripts

* Add basic README describing Spree installation

* Expand README's installation section

* Upgrade Spree SDK to 4.7.0 and add node-fetch to dependencies

* Order providers alphanumerically

Co-authored-by: Damian Legawiec <damian@sparksolutions.co>

* Sort products by available_on when using the Trending sorting in useSearch

* Change the default Spree port to 4000 and update README in sync with Spree Starter changes

* Save primary variant's SKU when normalizing a product from Spree

* Create a new cart if Spree can't find the current using a token

* Add separator to README

* Add missing Error subclass

* Allow placeholder images for products and line items without images

* Add image

* Reset tsconfig.json paths to originla values

* Search taxonomies by permalinks instead of IDs

* Upgrade Spree SDK to version 4.7.1

* Remove references to @framework and use relative paths instead

* Generalize TypeScript and add typings to getPage

* Update fetcher to avoid parsing non-JSON responses

* Use original product image by default instead of resized

* Link to an online demo of the Spree integration in the README

* Flatten fetcher responses

* Include Spree in the list of supported ecommerce backends in README

* Update README.md

* Format Spree's README

* Add link to the Spree demo site in the main README

* Update README.md

* Update README.md

* Allow setting a taxon id for getAllProducts

* Use Spree SDK's JSON:API helpers

* Sort getAllProducts by -updated_at when using a taxonomy

* Remove slash '/' from line item's paths

* Allow filtering variant images by option type

* Upgrade checkout behavior in line with core NextJS Commerce changes

* Remove dummy submitCheckout function

* [NX-24] Display PDP option types sorted by position from Spree

* Supply Spree primary variant if a product has no option variants

* Do not throw an error if a product doesn't have NEXT_PUBLIC_SPREE_IMAGES_OPTION_FILTER

* [NX-43] Uses image transformations when fetching products images

* Use bind to properly call Spree SDK methods and update SDK fetcher in line with SDK 4.12.0

* Fix ESLint issues in useHook

* Support account sign up, login and logout

Also
- Converts the guest cart to a persisted cart tied to the logged in user after log in.
- Fixes issues with use-remove-item. The cart will now properly refresh after an item is removed.
- Uses the logged in user's token to adjust the cart and make other authenticated requests.
- Transparently refreshed the access token of the logged in user with a refresh token. Replays requests to Spree which fail with a 401 error after refreshing the access token.

* Fetch logged in user's cart after login or signup but associate guest cart only after signup

* Support Spree default wishlist show, add and remove wished items operations

* Fetch Spree CMS Pages

* Fix login, handle critical token errors and fix WishlistCard

Fix to WishlistCard changes its props to be consistent with WishlistButton when calling useRemoveItem

* Fix variable name ()

Variable name should be `ChevronRight`

* Update get-cart.ts ()

include digital items

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>

* Update normalize.ts ()

add missing options property to `normalizeLineItem`

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>

* Update add-item.ts ()

* Update add-item.ts

include digital items

* Update add-item.ts

include digital items

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>

* fix typo ()

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>

* Fix authentication.refreshToken arguments

* Remove redundant comments and logs

* Fix createEmptyCart request to Spree and add option to disable auto login

* Fix formatting issues

* Apply image transformation when fetching images for products in cart

* Replace call to qs with Spree SDK built-in helper

* Upgrade Spree SDK to 5.0.1

* Rename zeitFetch import to vercelFetch

* Abstract fetcher JSON Content-Type checking into separate function

* Rename imageUrl to url

getMediaGallery already provides context for the constant

* Remove return type for getProductPath

The return type can be trivially determined from the returned value.

* Change URL to Spree demo store in root README

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>

* Change label for link to Spree demo store in Spree's README

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>

* Change URL to Spree demo store in Spree's README

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>

* Use only relative paths to /framework/spree from itself

Co-authored-by: tniezg <tomek.niezgoda@mail.com>
Co-authored-by: Damian Legawiec <damian@sparksolutions.co>
Co-authored-by: Robert Nowakowski <aplegatt@gmail.com>
Co-authored-by: Grey <57859708+greyhere@users.noreply.github.com>
Co-authored-by: pfcodes <phil@auroradigit.al>
Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
Co-authored-by: Konrad Kruk <github@konradk.pl>
2021-12-13 17:42:30 -03:00
Gonzalo Pozzo
541009fd15
Update readme with providers hold () 2021-12-10 16:34:33 -03:00
Gonzalo Pozzo
ea1bbcf1bb
Fix cart item image error () 2021-12-09 16:41:29 +01:00
Jordan Arldt
647b06cb52
Fixed BigCommerce Checkout SSO redirect_to issue () 2021-12-09 10:51:20 -03:00
Gonzalo Pozzo
d65b2efe9a
Custom checkout improvements ()
* Add context for storing checkout information

* Remove unused useState
2021-12-06 18:45:54 -03:00
Chris Vibert
950a7637a5
Fix typo and add missing feature to local config ()
* Add customCheckout feature flag to local config

* Fix typo
2021-11-29 10:52:43 -03:00
Nine
82cb719ad6
Feature/hamburger menu ()
* Setup Mobile Menu Sidebar

* Setup Basic Mobile Menu Items Styling

* Implement full width styling for mobile devices

* Cleanup

Co-authored-by: Nine <at059214@Abdurahmans-MacBook-Pro.local>
2021-11-25 15:09:21 -03:00
Jeremy Grancher
a01568bc3a
Added two extensions to VSCode's extensions.json ()
Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-25 09:22:34 -03:00
Gonzalo Pozzo
73470c9232
Run prettier fix on all files () 2021-11-25 09:17:13 -03:00
Gonzalo Pozzo
96e990268d
Add aria attributes () 2021-11-24 14:29:55 -03:00
Luis Orbaiceta
c8787865b3
Fix dynamically import Modal component ()
* fix: dynamically import Modal component

fixes error "document is not defined" if the user decides to display a modal at the beginning (for ads, promotions, etc...)

* fix: remove spread operator

* remove top level modal import

* fix import path for Modal

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-24 11:00:33 -03:00
Gonzalo Pozzo
683d309905
Fix bigcommerce build () 2021-11-24 10:30:38 -03:00
Tomek Niezgoda
e7fc93f9c7
Make wishlist's useRemoveItem call in WishlistCard consistent with WishlistButton () 2021-11-24 09:15:22 -03:00
Florian Cargouet
d4d22a3ce7
Replace button custom checkout enabled on /cart ()
Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-23 16:48:41 -03:00
Florian Cargouet
94c2d2d6d4
Add back options ()
Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-23 16:11:33 -03:00
Shaokun-X
179c10a53f
Wrap mobile search bar in env condition ()
Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-23 16:05:41 -03:00
Konrad Kruk
5e529dca96
fix typo ()
Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-19 15:42:54 -03:00
pfcodes
96a0900be4
Update add-item.ts ()
* Update add-item.ts

include digital items

* Update add-item.ts

include digital items

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-19 13:01:51 -03:00
pfcodes
3afe367c41
Update normalize.ts ()
add missing options property to `normalizeLineItem`

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-19 13:01:31 -03:00
pfcodes
d1e730d0b9
Update get-cart.ts ()
include digital items

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-11-19 12:59:23 -03:00
Grey
0cfbe42d86
Fix variable name ()
Variable name should be `ChevronRight`
2021-11-18 11:58:30 -03:00
Luis Alvarez D
582e9257d9
Update Next.js to 12 and switch to npm ()
* Update Commerce to Next.js 12

* Switch to npm

* Removed yarn

* Updated fetch type

* Fixed issue with BC deployment
2021-11-09 10:12:00 -06:00
Gonzalo Pozzo
e3471db3eb
Update ordercloud types () 2021-10-15 14:29:04 -03:00
Oliver Heywood
55b917489d
Add product list page to OrderCloud provider ()
* product list page and search working

* categories working

* clean things up like console.log

* undo these

* don't need sort stuff. update comment

* turns out the if statements here are necesary

* very incomplete progress on sign-in

* Revert "very incomplete progress on sign-in"

This reverts commit a8dd2af268f9c617ba17abf4b3cc7e5de10f8449.
2021-10-15 14:14:35 -03:00
Gonzalo Pozzo
d193708184
ordercloud env update 2021-10-06 16:43:02 -03:00
Gonzalo Pozzo
04d3927d0b
Update README.md 2021-10-06 16:41:00 -03:00
Gonzalo Pozzo
3f0c38461b
Add ordercloud provider ()
* Add ordercloud provider

* Fix provider errors

* Make submit checkout optional

* Make submit checkout optional

* Remove nullables when creating endpoint type

* Update readme

* Log checkout error

* Log error

* Save token to cookie

* Update fetch rest

* Use token at checkout

Co-authored-by: Luis Alvarez <luis@vercel.com>
2021-10-05 09:49:01 -03:00
cond0r
f9644fecef
Shopify: create checkout on add to cart ()
* Create checkout on add to cart

* Checkout changes

* Revert files

* Fix checkout
2021-09-24 16:55:46 -03:00
Gonzalo Pozzo
8e7b942240
Fix redirect checkout ()
* Fix redirect checkout

* Don't use checkout for saleor
2021-09-24 11:42:09 -05:00
Vinicius Zucatti
c440ff06d4
Fix next/link should be used with anchor as children () 2021-09-23 17:32:17 -05:00
Emrah
381cefae0e
fix: Remove the duplicate description field () 2021-09-23 15:27:46 -05:00
pfcodes
b1ede29576
Update get-customer-wishlist.ts ()
Closes 
2021-09-23 14:45:57 -05:00
Zac A
66548c887c
Fix Typo - 'starter' to 'started' ()
Fix for Issue 

Co-authored-by: Gonzalo Pozzo <gonzalo.pozzo4@gmail.com>
2021-09-23 15:56:26 -03:00
Pedro Vinícius
4b58f6365a
Update ProductView.tsx ()
When you navigate to other product page, the options selected by default don't change and the options from the last product navigated are used. Adding a key to "ProductSideBar" component, makes it refresh default options and refresh actual product selected options when i navigate for many products.
2021-09-23 14:44:32 -03:00
Emrah
e991b54b0e
Add loading state () 2021-09-22 21:28:14 -05:00
pfcodes
27182cce67
Update normalize.ts ()
add support for cart digital line items
2021-09-22 21:09:56 -05:00
Eduardo Fortuna
08f9cc5362
Update version api shopify () 2021-09-22 20:54:17 -05:00
Leah Wagner
fd10eba10d
Add title to page and add styling for base typography elements for Text component ()
* Add title to page and add styling for base typography elements for Text component

* Remove additional title

Co-authored-by: B <curciobelen@gmail.com>
Co-authored-by: Luis Alvarez D <luis@vercel.com>
2021-09-22 20:40:20 -05:00
gkielwasser
a59a41edab
Vendure - Fetcher - Globally throw errors ()
* Vendure - Fetcher - Globally throw errors

Globally throw errors from the Vendure fetcher when we detect errors in the response body

* Remove unnecessary new function

* Remove unnecessary import

Co-authored-by: Luis Alvarez D <luis@vercel.com>
2021-09-22 19:37:39 -05:00
Gonzalo Pozzo
1720bd698c
Implement custom checkout ()
* Implement custom checkout core

* Fix elements on core

* Add files to providers

* Adapt providers

* Update types

* Update shopify file

* Format files
2021-09-22 19:20:58 -05:00
Federico Joel Orlandau
61d075daf1
Improve a11y on the cart and sidebar ()
* Improve a11y on the cart

* Fix button style

* Remove extra space

* Move cart item count to the right position

Co-authored-by: Luis Alvarez D <luis@vercel.com>
2021-09-07 14:14:28 -05:00
Luis Alvarez D
a94f049f0a
Remove unused provider config ()
* Updated core types for commerce provider

* Updated bigcommerce provider

* Added util method for provider creation

* Removed unrequired code from saleor

* Updated shopify provider

* Updated providers and local setup

* Updated saleor setup

* Updated swell

* Updated vendure

* Updated swell-js usage

* Removed unrequired import from saleor
2021-08-30 22:32:20 -05:00
Isiko Saidiali
24dd291be2
Update README.md to include information on how to add a custom provider ()
* Update README.md

* Updated commerce readme

Co-authored-by: Luis Alvarez D <luis@vercel.com>
2021-08-28 00:11:53 -05:00
Luis Alvarez D
0e7e7b7d5f
Add Next.js ESLint ()
* Added Next.js eslint

* added eslint to lint-staged

* Added eslint config for prettier

* Fixed eslint issues in multiple files

* Fixed error in linter
2021-08-02 21:54:58 -05:00
Guillermo Angulo
0603b342be
Update SORT object to access from filter button on mobile () 2021-08-02 12:42:14 -05:00
ryanford
e8b577b83f
optionsSelections takes an array of options objs ()
* optionsSelections takes an array of options objs

* use options array to match API expectations

Co-authored-by: Ryan Ford <ryanford@users.noreply.github.com>
2021-08-01 17:46:36 -05:00
ikoruk
1375d88171
add default values to fix case where there are no values for product option (like text input) ()
Co-authored-by: Luis Alvarez D <luis@vercel.com>
2021-07-30 19:13:23 -05:00