diff --git a/components/auth/LoginView.tsx b/components/auth/LoginView.tsx index 89d5bf893..7b402e6d7 100644 --- a/components/auth/LoginView.tsx +++ b/components/auth/LoginView.tsx @@ -1,6 +1,6 @@ import { FC, useEffect, useState, useCallback } from 'react' import { Logo, Button, Input } from '@components/ui' -import useLogin from '@framework/auth/use-login' +import { useLogin } from '@framework/auth' import { useUI } from '@components/ui/context' import { validate } from 'email-validator' diff --git a/components/auth/SignUpView.tsx b/components/auth/SignUpView.tsx index 1b619828b..49351bfe9 100644 --- a/components/auth/SignUpView.tsx +++ b/components/auth/SignUpView.tsx @@ -3,7 +3,7 @@ import { validate } from 'email-validator' import { Info } from '@components/icons' import { useUI } from '@components/ui/context' import { Logo, Button, Input } from '@components/ui' -import useSignup from '@framework/auth/use-signup' +import { useSignup } from '@framework/auth' interface Props {} diff --git a/components/common/UserNav/DropdownMenu.tsx b/components/common/UserNav/DropdownMenu.tsx index a5bc5fd86..f8cedc332 100644 --- a/components/common/UserNav/DropdownMenu.tsx +++ b/components/common/UserNav/DropdownMenu.tsx @@ -8,6 +8,7 @@ import { Avatar } from '@components/common' import { Moon, Sun } from '@components/icons' import { useUI } from '@components/ui/context' import ClickOutside from '@lib/click-outside' +import { useLogout } from '@framework/auth' import { disableBodyScroll, @@ -15,8 +16,6 @@ import { clearAllBodyScrollLocks, } from 'body-scroll-lock' -import useLogout from '@framework/auth/use-logout' - interface DropdownMenuProps { open?: boolean } diff --git a/framework/bigcommerce/lib/generate-definitions.js b/framework/bigcommerce/lib/generate-definitions.js deleted file mode 100644 index a2b830d3b..000000000 --- a/framework/bigcommerce/lib/generate-definitions.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Generates definitions for REST API endpoints that are being - * used by ../api using https://github.com/drwpow/swagger-to-ts - */ -const { readFileSync, promises } = require('fs') -const path = require('path') -const fetch = require('node-fetch') -const swaggerToTS = require('@manifoldco/swagger-to-ts').default - -async function getSchema(filename) { - const url = `https://next-api.stoplight.io/projects/8433/files/${filename}` - const res = await fetch(url) - - if (!res.ok) { - throw new Error(`Request failed with ${res.status}: ${res.statusText}`) - } - - return res.json() -} - -const schemas = Object.entries({ - '../api/definitions/catalog.ts': - 'BigCommerce_Catalog_API.oas2.yml?ref=version%2F20.930', - '../api/definitions/store-content.ts': - 'BigCommerce_Store_Content_API.oas2.yml?ref=version%2F20.930', - '../api/definitions/wishlist.ts': - 'BigCommerce_Wishlist_API.oas2.yml?ref=version%2F20.930', - // swagger-to-ts is not working for the schema of the cart API - // '../api/definitions/cart.ts': - // 'BigCommerce_Server_to_Server_Cart_API.oas2.yml', -}) - -async function writeDefinitions() { - const ops = schemas.map(async ([dest, filename]) => { - const destination = path.join(__dirname, dest) - const schema = await getSchema(filename) - const definition = swaggerToTS(schema.content, { - prettierConfig: 'package.json', - }) - - await promises.writeFile(destination, definition) - - console.log(`✔️ Added definitions for: ${dest}`) - }) - - await Promise.all(ops) -} - -writeDefinitions() diff --git a/package.json b/package.json index dd78af9ba..b90bf4cf8 100644 --- a/package.json +++ b/package.json @@ -46,9 +46,7 @@ "dependencies": { "@reach/portal": "^0.11.2", "@tailwindcss/ui": "^0.6.2", - "@types/node-fetch": "2", "@vercel/fetch": "^6.1.0", - "@vercel/fetch-cached-dns": "^2.0.1", "body-scroll-lock": "^3.1.5", "bowser": "^2.11.0", "classnames": "^2.2.6", @@ -62,7 +60,6 @@ "next": "^10.0.5-canary.11", "next-seo": "^4.11.0", "next-themes": "^0.0.4", - "node-fetch": "^2.6.1", "postcss-nesting": "^7.0.1", "react": "^16.14.0", "react-dom": "^16.14.0", diff --git a/pages/index2.tsx b/pages/index2.tsx deleted file mode 100644 index ef1c0a96e..000000000 --- a/pages/index2.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import rangeMap from '@lib/range-map' -import { Layout } from '@components/common' -import { ProductCard } from '@components/product' -import { Grid, Marquee, Hero } from '@components/ui' -import HomeAllProductsGrid from '@components/common/HomeAllProductsGrid' -import type { GetStaticPropsContext, InferGetStaticPropsType } from 'next' - -import { getConfig } from '@framework/api' -import getAllProducts from '@framework/api/operations/get-all-products' -import getSiteInfo from '@framework/api/operations/get-site-info' -import getAllPages from '@framework/api/operations/get-all-pages' - -export async function getStaticProps({ - preview, - locale, -}: GetStaticPropsContext) { - const config = getConfig({ locale }) - - // Get Featured Products - const { products: featuredProducts } = await getAllProducts({ - variables: { field: 'featuredProducts', first: 6 }, - config, - preview, - }) - - // Get Best Selling Products - const { products: bestSellingProducts } = await getAllProducts({ - variables: { field: 'bestSellingProducts', first: 6 }, - config, - preview, - }) - - // Get Best Newest Products - const { products: newestProducts } = await getAllProducts({ - variables: { field: 'newestProducts', first: 12 }, - config, - preview, - }) - - const { categories, brands } = await getSiteInfo({ config, preview }) - const { pages } = await getAllPages({ config, preview }) - - // These are the products that are going to be displayed in the landing. - // We prefer to do the computation at buildtime/servertime - const { featured, bestSelling } = (() => { - // Create a copy of products that we can mutate - const products = [...newestProducts] - // If the lists of featured and best selling products don't have enough - // products, then fill them with products from the products list, this - // is useful for new commerce sites that don't have a lot of products - return { - featured: rangeMap(6, (i) => featuredProducts[i] ?? products.shift()) - .filter(nonNullable) - .sort((a, b) => a.node.prices.price.value - b.node.prices.price.value) - .reverse(), - bestSelling: rangeMap( - 6, - (i) => bestSellingProducts[i] ?? products.shift() - ).filter(nonNullable), - } - })() - - return { - props: { - featured, - bestSelling, - newestProducts, - categories, - brands, - pages, - }, - revalidate: 14400, - } -} - -const nonNullable = (v: any) => v - -export default function Home({ - featured, - bestSelling, - brands, - categories, - newestProducts, -}: InferGetStaticPropsType) { - return ( -
- - {featured.slice(0, 3).map(({ node }, i) => ( - - ))} - - - {bestSelling.slice(3, 6).map(({ node }) => ( - - ))} - - - - {featured.slice(3, 6).map(({ node }, i) => ( - - ))} - - - {bestSelling.slice(0, 3).map(({ node }) => ( - - ))} - - -
- ) -} - -Home.Layout = Layout diff --git a/tsconfig.json b/tsconfig.json index 43dfd2a27..480cc2cb4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,6 +26,12 @@ "@framework": ["framework/bigcommerce"] } }, - "include": ["next-env.d.ts", "**/*.d.ts", "**/*.ts", "**/*.tsx", "**/*.js"], + "include": [ + "next-env.d.ts", + "framework/*.d.ts", + "**/*.ts", + "**/*.tsx", + "**/*.js" + ], "exclude": ["node_modules"] }