mirror of
https://github.com/vercel/commerce.git
synced 2025-05-20 08:26:59 +00:00
feat(poc): finalize cart
This commit is contained in:
parent
5545375527
commit
0bd4c18958
@ -5,6 +5,7 @@ import { Suspense } from 'react';
|
||||
import { AddToCart } from 'components/cart/add-to-cart';
|
||||
import Grid from 'components/grid';
|
||||
import Footer from 'components/layout/footer';
|
||||
import { VariantSelector } from 'components/product/variant-selector';
|
||||
import ProductGridItems from 'components/layout/product-grid-items';
|
||||
import { Gallery } from 'components/product/gallery';
|
||||
import Prose from 'components/prose';
|
||||
@ -97,7 +98,7 @@ export default async function ProductPage({ params }: { params: { handle: string
|
||||
</div>
|
||||
|
||||
<div className="p-6 lg:col-span-2">
|
||||
{/* <VariantSelector options={product.options} variants={product.variants} /> */}
|
||||
<VariantSelector options={product.options} variants={product.variants} />
|
||||
|
||||
{product.descriptionHtml ? (
|
||||
<Prose className="mb-6 text-sm leading-tight" html={product.descriptionHtml} />
|
||||
|
@ -20,7 +20,7 @@ export async function Carousel() {
|
||||
<Link
|
||||
key={`${product.path}${i}`}
|
||||
href={`/product/${product.path}`}
|
||||
className="relative h-[30vh] w-1/2 flex-none md:w-1/3"
|
||||
className="relative mx-2 my-8 h-[30vh] w-1/2 flex-none md:w-1/3"
|
||||
>
|
||||
{product.featuredImage ? (
|
||||
<Image
|
||||
|
@ -1,36 +1,74 @@
|
||||
'use server';
|
||||
|
||||
import { requestAddToCart, requestCart } from 'lib/shopware/api';
|
||||
import { ApiClientError } from '@shopware/api-client';
|
||||
import { getApiClient } from 'lib/shopware/api';
|
||||
import { ExtendedCart } from 'lib/shopware/api-extended';
|
||||
import { cookies } from 'next/headers';
|
||||
export const fetchCart = async (cartId?: string) => {
|
||||
await requestCart(cartId);
|
||||
|
||||
export const fetchCart = async function (cartId?: string): Promise<ExtendedCart | undefined> {
|
||||
try {
|
||||
const apiClient = getApiClient(cartId);
|
||||
const cart = await apiClient.invoke('readCart get /checkout/cart?name', {});
|
||||
|
||||
return cart;
|
||||
} catch (error) {
|
||||
if (error instanceof ApiClientError) {
|
||||
console.error(error);
|
||||
console.error('Details:', error.details);
|
||||
} else {
|
||||
console.error('==>', error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const addItem = async (variantId: string | undefined): Promise<Error | undefined> => {
|
||||
const cartId = cookies().get('sw-context-token')?.value || '';
|
||||
const cartId = cookies().get('sw-context-token')?.value;
|
||||
|
||||
if (!variantId) {
|
||||
return new Error('Missing cartId or variantId');
|
||||
return new Error('Missing variantId');
|
||||
}
|
||||
|
||||
try {
|
||||
await requestAddToCart(variantId, cartId);
|
||||
} catch (e) {
|
||||
console.error('eeeee', e);
|
||||
return new Error('Error adding item', { cause: e });
|
||||
const apiClient = getApiClient(cartId);
|
||||
apiClient.invoke('addLineItem post /checkout/cart/line-item', {
|
||||
items: [
|
||||
{
|
||||
id: variantId,
|
||||
quantity: 1,
|
||||
referencedId: variantId,
|
||||
type: 'product'
|
||||
}
|
||||
]
|
||||
});
|
||||
} catch (error) {
|
||||
if (error instanceof ApiClientError) {
|
||||
console.error(error);
|
||||
console.error('Details:', error.details);
|
||||
} else {
|
||||
console.error('==>', error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const removeItem = async (lineId: string): Promise<Error | undefined> => {
|
||||
const cartId = cookies().get('cartId')?.value;
|
||||
const cartId = cookies().get('sw-context-token')?.value;
|
||||
|
||||
if (!cartId) {
|
||||
return new Error('Missing cartId');
|
||||
}
|
||||
|
||||
try {
|
||||
console.log('removeItem lineId', lineId);
|
||||
//await removeFromCart(cartId, [lineId]);
|
||||
} catch (e) {
|
||||
return new Error('Error removing item', { cause: e });
|
||||
const apiClient = getApiClient(cartId);
|
||||
await apiClient.invoke('deleteLineItem delete /checkout/cart/line-item?id[]={ids}', {
|
||||
ids: [lineId]
|
||||
});
|
||||
} catch (error) {
|
||||
if (error instanceof ApiClientError) {
|
||||
console.error(error);
|
||||
console.error('Details:', error.details);
|
||||
} else {
|
||||
console.error('==>', error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -43,23 +81,29 @@ export const updateItemQuantity = async ({
|
||||
variantId: string;
|
||||
quantity: number;
|
||||
}): Promise<Error | undefined> => {
|
||||
const cartId = cookies().get('cartId')?.value;
|
||||
const cartId = cookies().get('sw-context-token')?.value;
|
||||
|
||||
if (!cartId) {
|
||||
return new Error('Missing cartId');
|
||||
}
|
||||
|
||||
try {
|
||||
console.log('lineId', lineId);
|
||||
console.log('variantId', variantId);
|
||||
console.log('quantity', quantity);
|
||||
// await updateCart(cartId, [
|
||||
// {
|
||||
// id: lineId,
|
||||
// merchandiseId: variantId,
|
||||
// quantity
|
||||
// }
|
||||
// ]);
|
||||
} catch (e) {
|
||||
return new Error('Error updating item quantity', { cause: e });
|
||||
const apiClient = getApiClient(cartId);
|
||||
await apiClient.invoke('updateLineItem patch /checkout/cart/line-item', {
|
||||
items: [
|
||||
{
|
||||
id: lineId,
|
||||
referencedId: variantId,
|
||||
quantity: quantity
|
||||
}
|
||||
]
|
||||
});
|
||||
} catch (error) {
|
||||
if (error instanceof ApiClientError) {
|
||||
console.error(error);
|
||||
console.error('Details:', error.details);
|
||||
} else {
|
||||
console.error('==>', error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ export function AddToCart({
|
||||
availableForSale: boolean;
|
||||
product: Product;
|
||||
}) {
|
||||
const [selectedVariantId, setSelectedVariantId] = useState(variants[0]?.id);
|
||||
const [selectedVariantId, setSelectedVariantId] = useState(product.id);
|
||||
const router = useRouter();
|
||||
const searchParams = useSearchParams();
|
||||
const [isPending, startTransition] = useTransition();
|
||||
@ -33,7 +33,6 @@ export function AddToCart({
|
||||
if (variant) {
|
||||
setSelectedVariantId(variant.id);
|
||||
}
|
||||
console.log('selectedVariantId', selectedVariantId);
|
||||
}, [searchParams, variants, setSelectedVariantId, selectedVariantId]);
|
||||
|
||||
return (
|
||||
@ -43,7 +42,7 @@ export function AddToCart({
|
||||
onClick={() => {
|
||||
if (!availableForSale) return;
|
||||
startTransition(async () => {
|
||||
const error = await addItem(product.id);
|
||||
const error = await addItem(selectedVariantId);
|
||||
|
||||
if (error) {
|
||||
console.error(error);
|
||||
|
@ -1,20 +1,37 @@
|
||||
import { fetchCart } from 'components/cart/actions';
|
||||
import { getCart } from 'lib/shopware';
|
||||
import { cookies } from 'next/headers';
|
||||
import CartModal from './modal';
|
||||
import { transformCart } from 'lib/shopware/transform';
|
||||
|
||||
export default async function Cart() {
|
||||
let resCart;
|
||||
const cartId = cookies().get('sw-context-token')?.value;
|
||||
await fetchCart(cartId);
|
||||
let cartIdUpdated = false;
|
||||
const cart = await getCart(cartId);
|
||||
|
||||
if (cartId) {
|
||||
resCart = await fetchCart(cartId);
|
||||
}
|
||||
|
||||
let newToken;
|
||||
if (!cartId && !resCart) {
|
||||
resCart = await fetchCart();
|
||||
if (resCart?.token) {
|
||||
newToken = resCart?.token;
|
||||
}
|
||||
}
|
||||
|
||||
let cart;
|
||||
if (resCart) {
|
||||
cart = transformCart(resCart);
|
||||
}
|
||||
|
||||
if (!cart) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (cartId !== cart.id) {
|
||||
let cartIdUpdated = false;
|
||||
if (cartId !== newToken) {
|
||||
cartIdUpdated = true;
|
||||
}
|
||||
|
||||
return <CartModal cart={cart} cartIdUpdated={cartIdUpdated} />;
|
||||
}
|
||||
|
@ -122,6 +122,8 @@ export default function CartModal({ cart, cartIdUpdated }: { cart: Cart; cartIdU
|
||||
onClick={closeCart}
|
||||
>
|
||||
<div className="relative h-16 w-16 cursor-pointer overflow-hidden bg-white">
|
||||
{item.merchandise.product.featuredImage.url !== '' &&
|
||||
typeof item.merchandise.product.featuredImage.url !== 'undefined' ? (
|
||||
<Image
|
||||
className="h-full w-full object-cover"
|
||||
width={64}
|
||||
@ -132,6 +134,7 @@ export default function CartModal({ cart, cartIdUpdated }: { cart: Cart; cartIdU
|
||||
}
|
||||
src={item.merchandise.product.featuredImage.url}
|
||||
/>
|
||||
) : null}
|
||||
</div>
|
||||
<div className="flex flex-1 flex-col text-base">
|
||||
<span className="font-semibold">
|
||||
|
@ -10,6 +10,8 @@ type operationsWithoutOriginal = Omit<
|
||||
| 'readProductCrossSellings'
|
||||
| 'readProductListing'
|
||||
| 'searchPage'
|
||||
| 'readCart'
|
||||
| 'deleteLineItem'
|
||||
>;
|
||||
export type extendedPaths =
|
||||
| 'readCategory post /category/{navigationId}?slots'
|
||||
@ -19,6 +21,8 @@ export type extendedPaths =
|
||||
| 'readProductCrossSellings post /product/{productId}/cross-selling'
|
||||
| 'readProductListing post /product-listing/{categoryId}'
|
||||
| 'searchPage post /search'
|
||||
| 'readCart get /checkout/cart?name'
|
||||
| 'deleteLineItem delete /checkout/cart/line-item?id[]={ids}'
|
||||
| operationPaths;
|
||||
export type extendedOperations = operationsWithoutOriginal & {
|
||||
readCategory: extendedReadCategory;
|
||||
@ -28,14 +32,56 @@ export type extendedOperations = operationsWithoutOriginal & {
|
||||
readProductCrossSellings: extendedReadProductCrossSellings;
|
||||
readProductListing: extendedReadProductListing;
|
||||
searchPage: extendedSearchPage;
|
||||
readCart: extendedReadCart;
|
||||
deleteLineItem: extendedDeleteLineItem;
|
||||
};
|
||||
|
||||
export type ExtendedCart = Omit<schemas['Cart'], 'lineItems'> & {
|
||||
lineItems?: ExtendedLineItem[];
|
||||
};
|
||||
|
||||
export type ExtendedLineItem = schemas['LineItem'] & {
|
||||
payload: {
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
};
|
||||
price: ProductPrice;
|
||||
cover?: schemas['Media'];
|
||||
};
|
||||
|
||||
type ProductPrice = {
|
||||
unitPrice: number;
|
||||
quantity: number;
|
||||
totalPrice: number;
|
||||
calculatedTaxes: ProductCalculatedTaxes[];
|
||||
taxRules: ProductTaxRules[];
|
||||
referencePrice?: number;
|
||||
listPrice?: number;
|
||||
regulationPrice?: number;
|
||||
apiAlias: string;
|
||||
};
|
||||
|
||||
type ProductCalculatedTaxes = {
|
||||
tax: number;
|
||||
taxRate: number;
|
||||
price: number;
|
||||
apiAlias: string;
|
||||
};
|
||||
|
||||
type ProductTaxRules = {
|
||||
taxRate: number;
|
||||
percentage: number;
|
||||
apiAlias: string;
|
||||
};
|
||||
|
||||
export type ExtendedCmsBlock = Omit<schemas['CmsBlock'], 'slots'> & {
|
||||
slots?: schemas['CmsSlot'][];
|
||||
};
|
||||
|
||||
export type ExtendedCmsSection = Omit<schemas['CmsSection'], 'blocks'> & {
|
||||
blocks?: ExtendedCmsBlock[];
|
||||
};
|
||||
|
||||
export type ExtendedCmsPage = Omit<schemas['CmsPage'], 'sections'> & {
|
||||
sections?: ExtendedCmsSection[];
|
||||
};
|
||||
@ -293,3 +339,37 @@ type extendedReadProductListing = {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
type extendedReadCart = {
|
||||
parameters: {
|
||||
query?: {
|
||||
/** The name of the new cart. This parameter will only be used when creating a new cart. */
|
||||
name?: string;
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
/** Cart */
|
||||
200: {
|
||||
content: {
|
||||
'application/json': ExtendedCart;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
type extendedDeleteLineItem = {
|
||||
parameters: {
|
||||
query: {
|
||||
/** A list of product identifiers. */
|
||||
ids: string[];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
/** The updated cart. */
|
||||
200: {
|
||||
content: {
|
||||
'application/json': ExtendedCart;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { createAPIClient, RequestReturnType, ApiClientError } from '@shopware/api-client';
|
||||
import { operations } from '@shopware/api-client/api-types';
|
||||
import { cookies } from 'next/headers';
|
||||
import {
|
||||
ExtendedCategory,
|
||||
ExtendedCriteria,
|
||||
@ -18,19 +17,15 @@ import {
|
||||
} from './types';
|
||||
import { getStoreDomainWithApiType, getAccessToken, getApiType } from 'lib/shopware/helpers';
|
||||
|
||||
function getApiClient(cartId?: string) {
|
||||
const apiInstance = createAPIClient<extendedOperations, extendedPaths>({
|
||||
export function getApiClient(cartId?: string) {
|
||||
const apiClientParams = {
|
||||
baseURL: getStoreDomainWithApiType(),
|
||||
accessToken: getAccessToken(),
|
||||
apiType: getApiType(),
|
||||
contextToken: cartId,
|
||||
onContextChanged(newContextToken: string) {
|
||||
cookies().set('sw-context-token', newContextToken);
|
||||
console.log('newContextToken', newContextToken);
|
||||
}
|
||||
});
|
||||
contextToken: cartId
|
||||
};
|
||||
|
||||
return apiInstance;
|
||||
return createAPIClient<extendedOperations, extendedPaths>(apiClientParams);
|
||||
}
|
||||
|
||||
// reimport operations return types to use it in application
|
||||
@ -233,9 +228,9 @@ export async function requestCrossSell(
|
||||
}
|
||||
}
|
||||
|
||||
export async function requestCart(cartId?: string) {
|
||||
export async function requestContext(cartId?: string) {
|
||||
try {
|
||||
return getApiClient(cartId).invoke('readCart get /checkout/cart?name', {});
|
||||
return getApiClient(cartId).invoke('readContext get /context', {});
|
||||
} catch (error) {
|
||||
if (error instanceof ApiClientError) {
|
||||
console.error(error);
|
||||
@ -245,23 +240,3 @@ export async function requestCart(cartId?: string) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function requestContext(cartId?: string) {
|
||||
return getApiClient(cartId).invoke('readCart get /checkout/cart?name', {});
|
||||
}
|
||||
|
||||
export async function requestAddToCart(itemId: string, cartId: string) {
|
||||
try {
|
||||
return getApiClient(cartId).invoke('addLineItem post /checkout/cart/line-item', {
|
||||
items: [
|
||||
{
|
||||
referencedId: itemId,
|
||||
quantity: 1,
|
||||
type: 'product'
|
||||
}
|
||||
]
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('e', e);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
import {
|
||||
requestCart,
|
||||
requestCategory,
|
||||
requestCategoryList,
|
||||
requestCategoryProductsCollection,
|
||||
@ -32,7 +31,6 @@ import {
|
||||
} from './transform';
|
||||
import {
|
||||
ApiSchemas,
|
||||
Cart,
|
||||
CategoryListingResultSW,
|
||||
Menu,
|
||||
Page,
|
||||
@ -293,75 +291,3 @@ export async function getProductRecommendations(productId: string): Promise<Prod
|
||||
|
||||
return products ? transformProducts(products) : [];
|
||||
}
|
||||
|
||||
export async function getCart(cartId?: string): Promise<Cart | undefined> {
|
||||
const cartData = await requestCart(cartId);
|
||||
if (cartData) {
|
||||
// @ToDo: should be moved to transformCart function
|
||||
const cart: Cart = {
|
||||
checkoutUrl: 'https://frontends-demo.vercel.app',
|
||||
cost: {
|
||||
subtotalAmount: {
|
||||
amount: cartData.price?.positionPrice?.toString() || '0',
|
||||
currencyCode: 'EUR'
|
||||
},
|
||||
totalAmount: {
|
||||
amount: cartData.price?.totalPrice?.toString() || '0',
|
||||
currencyCode: 'EUR'
|
||||
},
|
||||
totalTaxAmount: {
|
||||
amount: '0',
|
||||
currencyCode: 'EUR'
|
||||
}
|
||||
},
|
||||
id: cartData.token || '',
|
||||
lines:
|
||||
cartData.lineItems?.map((lineItem) => ({
|
||||
id: lineItem.referencedId || '',
|
||||
quantity: lineItem.quantity ?? 0,
|
||||
cost: {
|
||||
totalAmount: {
|
||||
amount: (lineItem as any)?.price?.totalPrice || '',
|
||||
currencyCode: 'EUR'
|
||||
}
|
||||
},
|
||||
merchandise: {
|
||||
id: lineItem.referencedId ?? '',
|
||||
title: lineItem.label ?? '',
|
||||
selectedOptions: [],
|
||||
product: {
|
||||
description: lineItem.description ?? '',
|
||||
descriptionHtml: lineItem.description ?? '',
|
||||
id: lineItem.referencedId ?? '',
|
||||
images: [],
|
||||
path: '',
|
||||
seo: {
|
||||
description: lineItem.description ?? '',
|
||||
title: lineItem.label ?? ''
|
||||
},
|
||||
availableForSale: true,
|
||||
featuredImage: (lineItem as any).cover?.url,
|
||||
handle: '',
|
||||
options: [],
|
||||
variants: [],
|
||||
priceRange: {
|
||||
minVariantPrice: {
|
||||
amount: '', // @ToDo: should be correct value
|
||||
currencyCode: 'EUR'
|
||||
},
|
||||
maxVariantPrice: {
|
||||
amount: '', // @ToDo: should be correct value
|
||||
currencyCode: 'EUR'
|
||||
}
|
||||
},
|
||||
tags: [],
|
||||
title: lineItem.label ?? '',
|
||||
updatedAt: (lineItem as any)?.payload?.updatedAt
|
||||
}
|
||||
}
|
||||
})) || [],
|
||||
totalQuantity: cartData.lineItems?.length || 0
|
||||
};
|
||||
return cart;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
import {
|
||||
ApiSchemas,
|
||||
Cart,
|
||||
CartItem,
|
||||
CategoryListingResultSW,
|
||||
Collection,
|
||||
Menu,
|
||||
@ -9,8 +11,10 @@ import {
|
||||
ProductVariant
|
||||
} from './types';
|
||||
import {
|
||||
ExtendedCart,
|
||||
ExtendedCategory,
|
||||
ExtendedCmsPage,
|
||||
ExtendedLineItem,
|
||||
ExtendedProduct,
|
||||
ExtendedProductListingResult
|
||||
} from './api-extended';
|
||||
@ -329,3 +333,78 @@ export function transformHandle(handle: string | []): string {
|
||||
|
||||
return collectionName ?? '';
|
||||
}
|
||||
|
||||
export function transformCart(resCart: ExtendedCart): Cart {
|
||||
return {
|
||||
checkoutUrl: 'https://frontends-demo.vercel.app',
|
||||
cost: {
|
||||
subtotalAmount: {
|
||||
amount: resCart.price?.positionPrice?.toString() || '0',
|
||||
currencyCode: 'EUR'
|
||||
},
|
||||
totalAmount: {
|
||||
amount: resCart.price?.totalPrice?.toString() || '0',
|
||||
currencyCode: 'EUR'
|
||||
},
|
||||
totalTaxAmount: {
|
||||
amount: '0',
|
||||
currencyCode: 'EUR'
|
||||
}
|
||||
},
|
||||
id: resCart.token ?? '',
|
||||
lines:
|
||||
resCart.lineItems?.map((lineItem: ExtendedLineItem) => transformLineItem(lineItem)) || [],
|
||||
totalQuantity: resCart.lineItems?.length || 0
|
||||
};
|
||||
}
|
||||
|
||||
function transformLineItem(resLineItem: ExtendedLineItem): CartItem {
|
||||
return {
|
||||
id: resLineItem.id || '',
|
||||
quantity: resLineItem.quantity ?? 0,
|
||||
cost: {
|
||||
totalAmount: {
|
||||
amount: resLineItem.price?.totalPrice.toString() || '',
|
||||
currencyCode: 'EUR'
|
||||
}
|
||||
},
|
||||
merchandise: {
|
||||
id: resLineItem.referencedId ?? '',
|
||||
title: resLineItem.label ?? '',
|
||||
selectedOptions: [],
|
||||
product: {
|
||||
description: resLineItem.description ?? '',
|
||||
descriptionHtml: resLineItem.description ?? '',
|
||||
id: resLineItem.referencedId ?? '',
|
||||
images: [],
|
||||
path: resLineItem.referencedId ?? '',
|
||||
seo: {
|
||||
description: resLineItem.description ?? '',
|
||||
title: resLineItem.label ?? ''
|
||||
},
|
||||
availableForSale: true,
|
||||
featuredImage: {
|
||||
url: resLineItem.cover?.url ?? '',
|
||||
altText: resLineItem.cover?.translated?.alt ?? resLineItem.cover?.alt ?? '',
|
||||
width: Number(resLineItem.cover?.metaData?.width) ?? 0,
|
||||
height: Number(resLineItem.cover?.metaData?.height) ?? 0
|
||||
},
|
||||
options: [],
|
||||
variants: [],
|
||||
priceRange: {
|
||||
minVariantPrice: {
|
||||
amount: '', // @ToDo: should be correct value
|
||||
currencyCode: 'EUR'
|
||||
},
|
||||
maxVariantPrice: {
|
||||
amount: '', // @ToDo: should be correct value
|
||||
currencyCode: 'EUR'
|
||||
}
|
||||
},
|
||||
tags: [],
|
||||
title: resLineItem.label ?? '',
|
||||
updatedAt: resLineItem.payload?.updatedAt ?? resLineItem.payload?.createdAt ?? ''
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
12
package.json
12
package.json
@ -20,11 +20,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@headlessui/react": "^1.7.15",
|
||||
"@shopware/api-client": "0.0.0-canary-20230713092547",
|
||||
"@vercel/og": "^0.5.8",
|
||||
"@shopware/api-client": "0.0.0-canary-20230721083422",
|
||||
"@vercel/og": "^0.5.9",
|
||||
"clsx": "^1.2.1",
|
||||
"is-empty-iterable": "^3.0.0",
|
||||
"next": "13.4.10",
|
||||
"next": "13.4.12",
|
||||
"react": "18.2.0",
|
||||
"react-cookie": "^4.1.1",
|
||||
"react-dom": "18.2.0",
|
||||
@ -33,18 +33,18 @@
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.36.1",
|
||||
"@tailwindcss/typography": "^0.5.9",
|
||||
"@types/node": "^20.4.2",
|
||||
"@types/node": "^20.4.4",
|
||||
"@types/react": "18.2.15",
|
||||
"@types/react-dom": "18.2.7",
|
||||
"@vercel/git-hooks": "^1.0.0",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"eslint": "^8.45.0",
|
||||
"eslint-config-next": "^13.4.10",
|
||||
"eslint-config-next": "^13.4.12",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
"eslint-plugin-unicorn": "^48.0.0",
|
||||
"husky": "^8.0.3",
|
||||
"lint-staged": "^13.2.3",
|
||||
"postcss": "^8.4.26",
|
||||
"postcss": "^8.4.27",
|
||||
"prettier": "^3.0.0",
|
||||
"prettier-plugin-tailwindcss": "^0.4.1",
|
||||
"tailwindcss": "^3.3.3",
|
||||
|
243
pnpm-lock.yaml
generated
243
pnpm-lock.yaml
generated
@ -9,11 +9,11 @@ dependencies:
|
||||
specifier: ^1.7.15
|
||||
version: 1.7.15(react-dom@18.2.0)(react@18.2.0)
|
||||
'@shopware/api-client':
|
||||
specifier: 0.0.0-canary-20230713092547
|
||||
version: 0.0.0-canary-20230713092547
|
||||
specifier: 0.0.0-canary-20230721083422
|
||||
version: 0.0.0-canary-20230721083422
|
||||
'@vercel/og':
|
||||
specifier: ^0.5.8
|
||||
version: 0.5.8
|
||||
specifier: ^0.5.9
|
||||
version: 0.5.9
|
||||
clsx:
|
||||
specifier: ^1.2.1
|
||||
version: 1.2.1
|
||||
@ -21,8 +21,8 @@ dependencies:
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0
|
||||
next:
|
||||
specifier: 13.4.10
|
||||
version: 13.4.10(react-dom@18.2.0)(react@18.2.0)
|
||||
specifier: 13.4.12
|
||||
version: 13.4.12(react-dom@18.2.0)(react@18.2.0)
|
||||
react:
|
||||
specifier: 18.2.0
|
||||
version: 18.2.0
|
||||
@ -44,8 +44,8 @@ devDependencies:
|
||||
specifier: ^0.5.9
|
||||
version: 0.5.9(tailwindcss@3.3.3)
|
||||
'@types/node':
|
||||
specifier: ^20.4.2
|
||||
version: 20.4.2
|
||||
specifier: ^20.4.4
|
||||
version: 20.4.4
|
||||
'@types/react':
|
||||
specifier: 18.2.15
|
||||
version: 18.2.15
|
||||
@ -57,13 +57,13 @@ devDependencies:
|
||||
version: 1.0.0
|
||||
autoprefixer:
|
||||
specifier: ^10.4.14
|
||||
version: 10.4.14(postcss@8.4.26)
|
||||
version: 10.4.14(postcss@8.4.27)
|
||||
eslint:
|
||||
specifier: ^8.45.0
|
||||
version: 8.45.0
|
||||
eslint-config-next:
|
||||
specifier: ^13.4.10
|
||||
version: 13.4.10(eslint@8.45.0)(typescript@5.1.6)
|
||||
specifier: ^13.4.12
|
||||
version: 13.4.12(eslint@8.45.0)(typescript@5.1.6)
|
||||
eslint-config-prettier:
|
||||
specifier: ^8.8.0
|
||||
version: 8.8.0(eslint@8.45.0)
|
||||
@ -77,14 +77,14 @@ devDependencies:
|
||||
specifier: ^13.2.3
|
||||
version: 13.2.3
|
||||
postcss:
|
||||
specifier: ^8.4.26
|
||||
version: 8.4.26
|
||||
specifier: ^8.4.27
|
||||
version: 8.4.27
|
||||
prettier:
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0
|
||||
prettier-plugin-tailwindcss:
|
||||
specifier: ^0.4.1
|
||||
version: 0.4.1(prettier@3.0.0)https://boxblinkracer.com/blog/shopware-ai-demodata
|
||||
version: 0.4.1(prettier@3.0.0)
|
||||
tailwindcss:
|
||||
specifier: ^3.3.3
|
||||
version: 3.3.3
|
||||
@ -120,7 +120,7 @@ packages:
|
||||
resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/helper-validator-identifier': 7.22.5https://boxblinkracer.com/blog/shopware-ai-demodata
|
||||
'@babel/helper-validator-identifier': 7.22.5
|
||||
chalk: 2.4.2
|
||||
js-tokens: 4.0.0
|
||||
dev: true
|
||||
@ -142,8 +142,8 @@ packages:
|
||||
eslint-visitor-keys: 3.4.1
|
||||
dev: true
|
||||
|
||||
/@eslint-community/regexpp@4.5.1:
|
||||
resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==}
|
||||
/@eslint-community/regexpp@4.6.0:
|
||||
resolution: {integrity: sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==}
|
||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
@ -235,18 +235,18 @@ packages:
|
||||
'@jridgewell/sourcemap-codec': 1.4.14
|
||||
dev: true
|
||||
|
||||
/@next/env@13.4.10:
|
||||
resolution: {integrity: sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==}
|
||||
/@next/env@13.4.12:
|
||||
resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==}
|
||||
dev: false
|
||||
|
||||
/@next/eslint-plugin-next@13.4.10:
|
||||
resolution: {integrity: sha512-YJqyq6vk39JQfvaNtN83t/p5Jy45+bazRL+V4QI8FPd3FBqFYMEsULiwRLgSJMgFqkk4t4JbeZurz+gILEAFpA==}
|
||||
/@next/eslint-plugin-next@13.4.12:
|
||||
resolution: {integrity: sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A==}
|
||||
dependencies:
|
||||
glob: 7.1.7
|
||||
dev: true
|
||||
|
||||
/@next/swc-darwin-arm64@13.4.10:
|
||||
resolution: {integrity: sha512-4bsdfKmmg7mgFGph0UorD1xWfZ5jZEw4kKRHYEeTK9bT1QnMbPVPlVXQRIiFPrhoDQnZUoa6duuPUJIEGLV1Jg==}
|
||||
/@next/swc-darwin-arm64@13.4.12:
|
||||
resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
@ -254,8 +254,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-darwin-x64@13.4.10:
|
||||
resolution: {integrity: sha512-ngXhUBbcZIWZWqNbQSNxQrB9T1V+wgfCzAor2olYuo/YpaL6mUYNUEgeBMhr8qwV0ARSgKaOp35lRvB7EmCRBg==}
|
||||
/@next/swc-darwin-x64@13.4.12:
|
||||
resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
@ -263,8 +263,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-gnu@13.4.10:
|
||||
resolution: {integrity: sha512-SjCZZCOmHD4uyM75MVArSAmF5Y+IJSGroPRj2v9/jnBT36SYFTORN8Ag/lhw81W9EeexKY/CUg2e9mdebZOwsg==}
|
||||
/@next/swc-linux-arm64-gnu@13.4.12:
|
||||
resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
@ -272,8 +272,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-musl@13.4.10:
|
||||
resolution: {integrity: sha512-F+VlcWijX5qteoYIOxNiBbNE8ruaWuRlcYyIRK10CugqI/BIeCDzEDyrHIHY8AWwbkTwe6GRHabMdE688Rqq4Q==}
|
||||
/@next/swc-linux-arm64-musl@13.4.12:
|
||||
resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
@ -281,8 +281,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-gnu@13.4.10:
|
||||
resolution: {integrity: sha512-WDv1YtAV07nhfy3i1visr5p/tjiH6CeXp4wX78lzP1jI07t4PnHHG1WEDFOduXh3WT4hG6yN82EQBQHDi7hBrQ==}
|
||||
/@next/swc-linux-x64-gnu@13.4.12:
|
||||
resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
@ -290,8 +290,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-musl@13.4.10:
|
||||
resolution: {integrity: sha512-zFkzqc737xr6qoBgDa3AwC7jPQzGLjDlkNmt/ljvQJ/Veri5ECdHjZCUuiTUfVjshNIIpki6FuP0RaQYK9iCRg==}
|
||||
/@next/swc-linux-x64-musl@13.4.12:
|
||||
resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
@ -299,8 +299,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-arm64-msvc@13.4.10:
|
||||
resolution: {integrity: sha512-IboRS8IWz5mWfnjAdCekkl8s0B7ijpWeDwK2O8CdgZkoCDY0ZQHBSGiJ2KViAG6+BJVfLvcP+a2fh6cdyBr9QQ==}
|
||||
/@next/swc-win32-arm64-msvc@13.4.12:
|
||||
resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
@ -308,8 +308,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-ia32-msvc@13.4.10:
|
||||
resolution: {integrity: sha512-bSA+4j8jY4EEiwD/M2bol4uVEu1lBlgsGdvM+mmBm/BbqofNBfaZ2qwSbwE2OwbAmzNdVJRFRXQZ0dkjopTRaQ==}
|
||||
/@next/swc-win32-ia32-msvc@13.4.12:
|
||||
resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
@ -317,8 +317,8 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-x64-msvc@13.4.10:
|
||||
resolution: {integrity: sha512-g2+tU63yTWmcVQKDGY0MV1PjjqgZtwM4rB1oVVi/v0brdZAcrcTV+04agKzWtvWroyFz6IqtT0MoZJA7PNyLVw==}
|
||||
/@next/swc-win32-x64-msvc@13.4.12:
|
||||
resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
@ -352,7 +352,7 @@ packages:
|
||||
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
||||
dependencies:
|
||||
cross-spawn: 7.0.3
|
||||
fast-glob: 3.3.0
|
||||
fast-glob: 3.3.1
|
||||
is-glob: 4.0.3
|
||||
open: 9.1.0
|
||||
picocolors: 1.0.0
|
||||
@ -364,7 +364,7 @@ packages:
|
||||
engines: {node: '>=16'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@types/node': 20.4.2
|
||||
'@types/node': 20.4.4
|
||||
playwright-core: 1.36.1
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
@ -379,8 +379,8 @@ packages:
|
||||
resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==}
|
||||
dev: true
|
||||
|
||||
/@shopware/api-client@0.0.0-canary-20230713092547:
|
||||
resolution: {integrity: sha512-+5dHwprTnpwtHQl3eletxpvMexqKf9N8fIiecqaeemrsWLkiFyAouP76UzYPVjEF54neOOaAI0DuIBvi2w4WXg==}
|
||||
/@shopware/api-client@0.0.0-canary-20230721083422:
|
||||
resolution: {integrity: sha512-5oOFf6SSrxSkksXzFDalp+jwMw5P93KpUNiNzaHyL8XAE/e8B5/DdtXCCMl74sS9fdU3aC5y9mfuyvrPA4t1Zg==}
|
||||
dependencies:
|
||||
ofetch: 1.1.1
|
||||
dev: false
|
||||
@ -427,8 +427,8 @@ packages:
|
||||
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
|
||||
dev: true
|
||||
|
||||
/@types/node@20.4.2:
|
||||
resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==}
|
||||
/@types/node@20.4.4:
|
||||
resolution: {integrity: sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew==}
|
||||
dev: true
|
||||
|
||||
/@types/normalize-package-data@2.4.1:
|
||||
@ -521,8 +521,8 @@ packages:
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
|
||||
/@vercel/og@0.5.8:
|
||||
resolution: {integrity: sha512-WlY5q96e2OmQEUsgqKZrCljNHiD05aErsa7u2z2+pkxyoVSWPHXLYFwHPtp7+IubU4gt4JYfgSbzGQg7n6xeAQ==}
|
||||
/@vercel/og@0.5.9:
|
||||
resolution: {integrity: sha512-CtjaV/BVHtNCjRtxGqn8Q6AKFLqcG34Byxr91+mY+4eqyp/09LVe9jEeY9WXjbaKvu8syWPMteTpY+YQUQYzSg==}
|
||||
engines: {node: '>=16'}
|
||||
dependencies:
|
||||
'@resvg/resvg-wasm': 2.4.1
|
||||
@ -697,7 +697,7 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/autoprefixer@10.4.14(postcss@8.4.26):
|
||||
/autoprefixer@10.4.14(postcss@8.4.27):
|
||||
resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
hasBin: true
|
||||
@ -705,11 +705,11 @@ packages:
|
||||
postcss: ^8.1.0
|
||||
dependencies:
|
||||
browserslist: 4.21.9
|
||||
caniuse-lite: 1.0.30001516
|
||||
caniuse-lite: 1.0.30001517
|
||||
fraction.js: 4.2.0
|
||||
normalize-range: 0.1.2
|
||||
picocolors: 1.0.0
|
||||
postcss: 8.4.26
|
||||
postcss: 8.4.27
|
||||
postcss-value-parser: 4.2.0
|
||||
dev: true
|
||||
|
||||
@ -774,8 +774,8 @@ packages:
|
||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001516
|
||||
electron-to-chromium: 1.4.461
|
||||
caniuse-lite: 1.0.30001517
|
||||
electron-to-chromium: 1.4.468
|
||||
node-releases: 2.0.13
|
||||
update-browserslist-db: 1.0.11(browserslist@4.21.9)
|
||||
dev: true
|
||||
@ -820,8 +820,8 @@ packages:
|
||||
resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
|
||||
dev: false
|
||||
|
||||
/caniuse-lite@1.0.30001516:
|
||||
resolution: {integrity: sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==}
|
||||
/caniuse-lite@1.0.30001517:
|
||||
resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==}
|
||||
|
||||
/chalk@2.4.2:
|
||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||
@ -1058,6 +1058,10 @@ packages:
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/destr@2.0.0:
|
||||
resolution: {integrity: sha512-FJ9RDpf3GicEBvzI3jxc2XhHzbqD8p4ANw/1kPsFBfTvP1b7Gn/Lg1vO7R9J4IVgoMbyUmFrFGZafJ1hPZpvlg==}
|
||||
dev: false
|
||||
|
||||
/didyoumean@1.2.2:
|
||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
||||
dev: true
|
||||
@ -1091,8 +1095,8 @@ packages:
|
||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||
dev: true
|
||||
|
||||
/electron-to-chromium@1.4.461:
|
||||
resolution: {integrity: sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==}
|
||||
/electron-to-chromium@1.4.468:
|
||||
resolution: {integrity: sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==}
|
||||
dev: true
|
||||
|
||||
/emoji-regex@10.2.1:
|
||||
@ -1147,7 +1151,7 @@ packages:
|
||||
is-regex: 1.1.4
|
||||
is-shared-array-buffer: 1.0.2
|
||||
is-string: 1.0.7
|
||||
is-typed-array: 1.1.10
|
||||
is-typed-array: 1.1.12
|
||||
is-weakref: 1.0.2
|
||||
object-inspect: 1.12.3
|
||||
object-keys: 1.1.1
|
||||
@ -1163,7 +1167,7 @@ packages:
|
||||
typed-array-byte-offset: 1.0.0
|
||||
typed-array-length: 1.0.4
|
||||
unbox-primitive: 1.0.2
|
||||
which-typed-array: 1.1.10
|
||||
which-typed-array: 1.1.11
|
||||
dev: true
|
||||
|
||||
/es-set-tostringtag@2.0.1:
|
||||
@ -1209,8 +1213,8 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/eslint-config-next@13.4.10(eslint@8.45.0)(typescript@5.1.6):
|
||||
resolution: {integrity: sha512-+JjcM6lQmFR5Mw0ORm9o1CR29+z/uajgSfYAPEGIBxOhTHBgCMs7ysuwi72o7LkMmA8E3N7/h09pSGZxs0s85g==}
|
||||
/eslint-config-next@13.4.12(eslint@8.45.0)(typescript@5.1.6):
|
||||
resolution: {integrity: sha512-ZF0r5vxKaVazyZH/37Au/XItiG7qUOBw+HaH3PeyXltIMwXorsn6bdrl0Nn9N5v5v9spc+6GM2ryjugbjF6X2g==}
|
||||
peerDependencies:
|
||||
eslint: ^7.23.0 || ^8.0.0
|
||||
typescript: '>=3.3.1'
|
||||
@ -1218,7 +1222,7 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@next/eslint-plugin-next': 13.4.10
|
||||
'@next/eslint-plugin-next': 13.4.12
|
||||
'@rushstack/eslint-patch': 1.3.2
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6)
|
||||
eslint: 8.45.0
|
||||
@ -1226,7 +1230,7 @@ packages:
|
||||
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.45.0)
|
||||
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0)
|
||||
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.45.0)
|
||||
eslint-plugin-react: 7.32.2(eslint@8.45.0)
|
||||
eslint-plugin-react: 7.33.0(eslint@8.45.0)
|
||||
eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.45.0)
|
||||
typescript: 5.1.6
|
||||
transitivePeerDependencies:
|
||||
@ -1374,8 +1378,8 @@ packages:
|
||||
eslint: 8.45.0
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-react@7.32.2(eslint@8.45.0):
|
||||
resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
|
||||
/eslint-plugin-react@7.33.0(eslint@8.45.0):
|
||||
resolution: {integrity: sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==}
|
||||
engines: {node: '>=4'}
|
||||
peerDependencies:
|
||||
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
|
||||
@ -1441,7 +1445,7 @@ packages:
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0)
|
||||
'@eslint-community/regexpp': 4.5.1
|
||||
'@eslint-community/regexpp': 4.6.0
|
||||
'@eslint/eslintrc': 2.1.0
|
||||
'@eslint/js': 8.44.0
|
||||
'@humanwhocodes/config-array': 0.11.10
|
||||
@ -1548,8 +1552,8 @@ packages:
|
||||
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
|
||||
dev: true
|
||||
|
||||
/fast-glob@3.3.0:
|
||||
resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==}
|
||||
/fast-glob@3.3.1:
|
||||
resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
|
||||
engines: {node: '>=8.6.0'}
|
||||
dependencies:
|
||||
'@nodelib/fs.stat': 2.0.5
|
||||
@ -1758,7 +1762,7 @@ packages:
|
||||
dependencies:
|
||||
array-union: 2.1.0
|
||||
dir-glob: 3.0.1
|
||||
fast-glob: 3.3.0
|
||||
fast-glob: 3.3.1
|
||||
ignore: 5.2.4
|
||||
merge2: 1.4.1
|
||||
slash: 3.0.0
|
||||
@ -1769,7 +1773,7 @@ packages:
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
dependencies:
|
||||
dir-glob: 3.0.1
|
||||
fast-glob: 3.3.0
|
||||
fast-glob: 3.3.1
|
||||
ignore: 5.2.4
|
||||
merge2: 1.4.1
|
||||
slash: 4.0.0
|
||||
@ -1911,7 +1915,7 @@ packages:
|
||||
dependencies:
|
||||
call-bind: 1.0.2
|
||||
get-intrinsic: 1.2.1
|
||||
is-typed-array: 1.1.10
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
|
||||
/is-arrayish@0.2.1:
|
||||
@ -2071,15 +2075,11 @@ packages:
|
||||
has-symbols: 1.0.3
|
||||
dev: true
|
||||
|
||||
/is-typed-array@1.1.10:
|
||||
resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==}
|
||||
/is-typed-array@1.1.12:
|
||||
resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
available-typed-arrays: 1.0.5
|
||||
call-bind: 1.0.2
|
||||
for-each: 0.3.3
|
||||
gopd: 1.0.1
|
||||
has-tostringtag: 1.0.0
|
||||
which-typed-array: 1.1.11
|
||||
dev: true
|
||||
|
||||
/is-weakref@1.0.2:
|
||||
@ -2354,8 +2354,8 @@ packages:
|
||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||
dev: true
|
||||
|
||||
/next@13.4.10(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-4ep6aKxVTQ7rkUW2fBLhpBr/5oceCuf4KmlUpvG/aXuDTIf9mexNSpabUD6RWPspu6wiJJvozZREhXhueYO36A==}
|
||||
/next@13.4.12(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==}
|
||||
engines: {node: '>=16.8.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@ -2372,10 +2372,10 @@ packages:
|
||||
sass:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@next/env': 13.4.10
|
||||
'@next/env': 13.4.12
|
||||
'@swc/helpers': 0.5.1
|
||||
busboy: 1.6.0
|
||||
caniuse-lite: 1.0.30001516
|
||||
caniuse-lite: 1.0.30001517
|
||||
postcss: 8.4.14
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
@ -2383,15 +2383,15 @@ packages:
|
||||
watchpack: 2.4.0
|
||||
zod: 3.21.4
|
||||
optionalDependencies:
|
||||
'@next/swc-darwin-arm64': 13.4.10
|
||||
'@next/swc-darwin-x64': 13.4.10
|
||||
'@next/swc-linux-arm64-gnu': 13.4.10
|
||||
'@next/swc-linux-arm64-musl': 13.4.10
|
||||
'@next/swc-linux-x64-gnu': 13.4.10
|
||||
'@next/swc-linux-x64-musl': 13.4.10
|
||||
'@next/swc-win32-arm64-msvc': 13.4.10
|
||||
'@next/swc-win32-ia32-msvc': 13.4.10
|
||||
'@next/swc-win32-x64-msvc': 13.4.10
|
||||
'@next/swc-darwin-arm64': 13.4.12
|
||||
'@next/swc-darwin-x64': 13.4.12
|
||||
'@next/swc-linux-arm64-gnu': 13.4.12
|
||||
'@next/swc-linux-arm64-musl': 13.4.12
|
||||
'@next/swc-linux-x64-gnu': 13.4.12
|
||||
'@next/swc-linux-x64-musl': 13.4.12
|
||||
'@next/swc-win32-arm64-msvc': 13.4.12
|
||||
'@next/swc-win32-ia32-msvc': 13.4.12
|
||||
'@next/swc-win32-x64-msvc': 13.4.12
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- babel-plugin-macros
|
||||
@ -2500,6 +2500,14 @@ packages:
|
||||
es-abstract: 1.22.1
|
||||
dev: true
|
||||
|
||||
/ofetch@1.1.1:
|
||||
resolution: {integrity: sha512-SSMoktrp9SNLi20BWfB/BnnKcL0RDigXThD/mZBeQxkIRv1xrd9183MtLdsqRYLYSqW0eTr5t8w8MqjNhvoOQQ==}
|
||||
dependencies:
|
||||
destr: 2.0.0
|
||||
node-fetch-native: 1.2.0
|
||||
ufo: 1.1.2
|
||||
dev: false
|
||||
|
||||
/once@1.4.0:
|
||||
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||
dependencies:
|
||||
@ -2674,29 +2682,29 @@ packages:
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/postcss-import@15.1.0(postcss@8.4.26):
|
||||
/postcss-import@15.1.0(postcss@8.4.27):
|
||||
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
postcss: ^8.0.0
|
||||
dependencies:
|
||||
postcss: 8.4.26
|
||||
postcss: 8.4.27
|
||||
postcss-value-parser: 4.2.0
|
||||
read-cache: 1.0.0
|
||||
resolve: 1.22.2
|
||||
dev: true
|
||||
|
||||
/postcss-js@4.0.1(postcss@8.4.26):
|
||||
/postcss-js@4.0.1(postcss@8.4.27):
|
||||
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
|
||||
engines: {node: ^12 || ^14 || >= 16}
|
||||
peerDependencies:
|
||||
postcss: ^8.4.21
|
||||
dependencies:
|
||||
camelcase-css: 2.0.1
|
||||
postcss: 8.4.26
|
||||
postcss: 8.4.27
|
||||
dev: true
|
||||
|
||||
/postcss-load-config@4.0.1(postcss@8.4.26):
|
||||
/postcss-load-config@4.0.1(postcss@8.4.27):
|
||||
resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
|
||||
engines: {node: '>= 14'}
|
||||
peerDependencies:
|
||||
@ -2709,17 +2717,17 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
lilconfig: 2.1.0
|
||||
postcss: 8.4.26
|
||||
postcss: 8.4.27
|
||||
yaml: 2.3.1
|
||||
dev: true
|
||||
|
||||
/postcss-nested@6.0.1(postcss@8.4.26):
|
||||
/postcss-nested@6.0.1(postcss@8.4.27):
|
||||
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
|
||||
engines: {node: '>=12.0'}
|
||||
peerDependencies:
|
||||
postcss: ^8.2.14
|
||||
dependencies:
|
||||
postcss: 8.4.26
|
||||
postcss: 8.4.27
|
||||
postcss-selector-parser: 6.0.13
|
||||
dev: true
|
||||
|
||||
@ -2751,8 +2759,8 @@ packages:
|
||||
source-map-js: 1.0.2
|
||||
dev: false
|
||||
|
||||
/postcss@8.4.26:
|
||||
resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==}
|
||||
/postcss@8.4.27:
|
||||
resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
dependencies:
|
||||
nanoid: 3.3.6
|
||||
@ -3281,8 +3289,8 @@ packages:
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/sucrase@3.33.0:
|
||||
resolution: {integrity: sha512-ARGC7vbufOHfpvyGcZZXFaXCMZ9A4fffOGC5ucOW7+WHDGlAe8LJdf3Jts1sWhDeiI1RSWrKy5Hodl+JWGdW2A==}
|
||||
/sucrase@3.34.0:
|
||||
resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
|
||||
engines: {node: '>=8'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@ -3332,7 +3340,7 @@ packages:
|
||||
chokidar: 3.5.3
|
||||
didyoumean: 1.2.2
|
||||
dlv: 1.1.3
|
||||
fast-glob: 3.3.0
|
||||
fast-glob: 3.3.1
|
||||
glob-parent: 6.0.2
|
||||
is-glob: 4.0.3
|
||||
jiti: 1.19.1
|
||||
@ -3341,14 +3349,14 @@ packages:
|
||||
normalize-path: 3.0.0
|
||||
object-hash: 3.0.0
|
||||
picocolors: 1.0.0
|
||||
postcss: 8.4.26
|
||||
postcss-import: 15.1.0(postcss@8.4.26)
|
||||
postcss-js: 4.0.1(postcss@8.4.26)
|
||||
postcss-load-config: 4.0.1(postcss@8.4.26)
|
||||
postcss-nested: 6.0.1(postcss@8.4.26)
|
||||
postcss: 8.4.27
|
||||
postcss-import: 15.1.0(postcss@8.4.27)
|
||||
postcss-js: 4.0.1(postcss@8.4.27)
|
||||
postcss-load-config: 4.0.1(postcss@8.4.27)
|
||||
postcss-nested: 6.0.1(postcss@8.4.27)
|
||||
postcss-selector-parser: 6.0.13
|
||||
resolve: 1.22.2
|
||||
sucrase: 3.33.0
|
||||
sucrase: 3.34.0
|
||||
transitivePeerDependencies:
|
||||
- ts-node
|
||||
dev: true
|
||||
@ -3458,7 +3466,7 @@ packages:
|
||||
dependencies:
|
||||
call-bind: 1.0.2
|
||||
get-intrinsic: 1.2.1
|
||||
is-typed-array: 1.1.10
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
|
||||
/typed-array-byte-length@1.0.0:
|
||||
@ -3468,7 +3476,7 @@ packages:
|
||||
call-bind: 1.0.2
|
||||
for-each: 0.3.3
|
||||
has-proto: 1.0.1
|
||||
is-typed-array: 1.1.10
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
|
||||
/typed-array-byte-offset@1.0.0:
|
||||
@ -3479,7 +3487,7 @@ packages:
|
||||
call-bind: 1.0.2
|
||||
for-each: 0.3.3
|
||||
has-proto: 1.0.1
|
||||
is-typed-array: 1.1.10
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
|
||||
/typed-array-length@1.0.4:
|
||||
@ -3487,7 +3495,7 @@ packages:
|
||||
dependencies:
|
||||
call-bind: 1.0.2
|
||||
for-each: 0.3.3
|
||||
is-typed-array: 1.1.10
|
||||
is-typed-array: 1.1.12
|
||||
dev: true
|
||||
|
||||
/typescript@5.1.6:
|
||||
@ -3496,6 +3504,10 @@ packages:
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/ufo@1.1.2:
|
||||
resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==}
|
||||
dev: false
|
||||
|
||||
/unbox-primitive@1.0.2:
|
||||
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
|
||||
dependencies:
|
||||
@ -3570,8 +3582,8 @@ packages:
|
||||
is-symbol: 1.0.4
|
||||
dev: true
|
||||
|
||||
/which-typed-array@1.1.10:
|
||||
resolution: {integrity: sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==}
|
||||
/which-typed-array@1.1.11:
|
||||
resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
available-typed-arrays: 1.0.5
|
||||
@ -3579,7 +3591,6 @@ packages:
|
||||
for-each: 0.3.3
|
||||
gopd: 1.0.1
|
||||
has-tostringtag: 1.0.0
|
||||
is-typed-array: 1.1.10
|
||||
dev: true
|
||||
|
||||
/which@2.0.2:
|
||||
|
Loading…
x
Reference in New Issue
Block a user