From 843edc429f3a5832c9a52ec3bdb10a3aac98170a Mon Sep 17 00:00:00 2001 From: Ghita Lucian Date: Thu, 17 Aug 2023 14:00:35 +0200 Subject: [PATCH] 1st attempt of connecting it to live data --- lib/cf/adventures.js | 227 ++++++++++++++++++++++++++++ lib/shopify/adventures.ts | 88 +++++++++-- lib/shopify/index.ts | 46 +++--- lib/shopify/mock.js | 178 ---------------------- package.json | 5 +- pnpm-lock.yaml | 300 ++++++++++++++++++++++++++++++++++++-- 6 files changed, 620 insertions(+), 224 deletions(-) create mode 100644 lib/cf/adventures.js delete mode 100644 lib/shopify/mock.js diff --git a/lib/cf/adventures.js b/lib/cf/adventures.js new file mode 100644 index 000000000..215fcfce3 --- /dev/null +++ b/lib/cf/adventures.js @@ -0,0 +1,227 @@ +/* + * Copyright 2022 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + * + */ + +import AEMHeadless from '@adobe/aem-headless-client-js'; +// import { PUBLIC_AEM_HOST, PUBLIC_GRAPHQL_ENDPOINT } from '$env/static/public'; +// import { AEM_AUTH } from '$env/static/private'; + +const PUBLIC_AEM_HOST = 'https://publish-p64257-e147834-cmstg.adobeaemcloud.com'; +const PUBLIC_GRAPHQL_ENDPOINT = '/content/_cq_graphql/aem-demo-assets/endpoint.json'; +export class AdventureClient { + static fromEnv() { + if (!this.__envClient) { + this.__envClient = new AdventureClient({ + serviceURL: PUBLIC_AEM_HOST, + endpoint: PUBLIC_GRAPHQL_ENDPOINT, + auth: '' + }); + } + return this.__envClient; + } + constructor({ serviceURL, endpoint, auth }) { + this.aemHeadlessClient = new AEMHeadless({ + serviceURL, + endpoint, + auth, + fetch + }); + } + + async getAllAdventures() { + // const queryAdventuresAll = 'aem-demo-assets/adventures-all'; + // const res = await this.aemHeadlessClient.runPersistedQuery(queryAdventuresAll); + const query = `{ + adventureList { + items { + _path + title + activity + adventureType + price + tripLength + groupSize + difficulty + primaryImage { + ... on ImageRef { + _path + mimeType + width + height + } + } + description { + html + } + itinerary { + html + } + } + } + } + `; + const res = await this.aemHeadlessClient.runQuery(query); + return res; + } + + async getAdventurePaths() { + const res = await this.getAllAdventures(); + const adventures = res?.data?.adventureList?.items || []; + const paths = adventures.map((item) => ({ + params: { + path: [item.slug] + } + })); + return paths; + } + + async getAdventureByPath(path) { + const query = `{ + adventureByPath (_path: "${path}") { + item { + _path + title + activity + adventureType + price + tripLength + groupSize + difficulty + primaryImage { + ... on ImageRef { + _path + mimeType + width + height + } + } + description { + html + } + itinerary { + html + } + } + } + } + `; + const res = await this.aemHeadlessClient.runQuery(query); + return res; + } +} + +export const winterCollection = { + handle: 'winter-collection', + title: 'Winter', + description: 'Adventures for the winter.', + seo: { + title: 'Winter Collection', + description: 'Adventures for the winter.' + }, + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const summerCollection = { + handle: 'summer-collection', + title: 'Summer', + description: 'Adventures for the summer.', + seo: { + title: 'Summer Collection', + description: 'Adventures for the summer.' + }, + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const europeCollection = { + handle: 'europe-collection', + title: 'Europe', + description: 'Adventures in Europe.', + seo: { + title: 'Europe Collection', + description: 'Adventures in Europe.' + }, + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const tcPage = { + id: 'tc', + title: 'Terms & Conditions', + handle: 'tc', + body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + bodySummary: 'Summary', + seo: { + title: 'Terms & Conditions Page', + description: 'This is a sample page.' + }, + createdAt: '2023-08-01T00:00:00Z', + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const aboutPage = { + id: 'about', + title: 'About', + handle: 'about', + body: 'This website is built with Next.js Commerce, which is a ecommerce template for creating a headless storefront. ', + bodySummary: 'Summary of about page', + seo: { + title: 'About Page', + description: 'This is a sample page.' + }, + createdAt: '2023-08-01T00:00:00Z', + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const faqPage = { + id: 'faq', + title: 'FAQ', + handle: 'faq', + body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + bodySummary: 'Summary of about page', + seo: { + title: 'About Page', + description: 'This is a sample page.' + }, + createdAt: '2023-08-01T00:00:00Z', + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const ppPage = { + id: 'pp', + title: 'Privacy Policy', + handle: 'pp', + body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + bodySummary: 'Summary of about page', + seo: { + title: 'Privacy Page', + description: 'This is a sample page.' + }, + createdAt: '2023-08-01T00:00:00Z', + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const srPage = { + id: 'sr', + title: 'Shipping & Return Policy', + handle: 'sr', + body: 'Shipping & Return Policy Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + bodySummary: 'Summary of about page', + seo: { + title: 'Privacy Page', + description: 'This is a sample page.' + }, + createdAt: '2023-08-01T00:00:00Z', + updatedAt: '2023-08-10T00:00:00Z' +}; + +export const pages = [tcPage, aboutPage, ppPage, faqPage, srPage]; + +export const collections = [winterCollection, summerCollection, europeCollection]; diff --git a/lib/shopify/adventures.ts b/lib/shopify/adventures.ts index bcf5b23b8..e2ad6ae50 100644 --- a/lib/shopify/adventures.ts +++ b/lib/shopify/adventures.ts @@ -1,6 +1,63 @@ +import { AdventureClient } from '../cf/adventures'; + const baseImagePath = 'https://publish-p64257-e147834-cmstg.adobeaemcloud.com/'; -const adventures = [ +const getAllAdventures = async () => { + const client: AdventureClient = AdventureClient.fromEnv(); + const res = await client.getAllAdventures(); + const adventures = res?.data?.adventureList?.items || []; + return adventures; +}; + +export async function getStaticCart() { + const mockShopifyProduct = (await getAdventureProducts())[0]; + const mockCartItem = { + id: 'item1', + quantity: 1, + cost: { + totalAmount: { + amount: '100.00', + currencyCode: 'USD' + } + }, + merchandise: { + id: 'merchandise1', + title: 'WKND Adventure', + selectedOptions: [ + { + name: 'Duration', + value: 'Normal' + } + ], + product: mockShopifyProduct + } + }; + + const cart = { + id: 'cart1', + checkoutUrl: 'https://example.com/checkout', + cost: { + subtotalAmount: { + amount: '90.00', + currencyCode: 'USD' + }, + totalAmount: { + amount: '100.00', + currencyCode: 'USD' + }, + totalTaxAmount: { + amount: '10.00', + currencyCode: 'USD' + } + }, + lines: { edges: [{ node: mockCartItem }] }, + totalQuantity: 1 + }; + + return cart; +} + +const adventuresOld = [ { _path: '/content/dam/aem-demo-assets/en/adventures/bali-surf-camp/bali-surf-camp', title: 'Basel Surf Camp', @@ -620,24 +677,37 @@ export function transformToProduct(adventure: any): Product { return product; } -export const adventureProducts: Product[] = adventures.map(transformToProduct) as Product[]; +// export const adventureProducts: Product[] = adventures.map(transformToProduct) as Product[]; -export const adventureProductNodes = adventureProducts.map((product) => ({ - node: product -})); +export async function getAdventureProducts() { + const adventures = await getAllAdventures(); + const products = adventures.map(transformToProduct) as Product[]; + return products; +} -export function getProductNodesByKeyword(keyword: string | undefined): { node: Product }[] { - return getProductsByKeyword(keyword).map((product) => ({ +export async function getAdventureProductsNode() { + const adventureProducts = await getAdventureProducts(); + const adventureProductNodes = adventureProducts.map((product) => ({ + node: product + })); + + return adventureProductNodes; +} + +export async function getProductNodesByKeyword(keyword: string | undefined) { + return (await getProductsByKeyword(keyword)).map((product) => ({ node: product })); } -export function getProductByHandle(handle: string): Product | undefined { +export async function getProductByHandle(handle: string) { + const adventureProducts = await getAdventureProducts(); const res = adventureProducts.find((product) => product.handle === handle); return res; } -export function getProductsByKeyword(keyword: string | undefined): Product[] { +export async function getProductsByKeyword(keyword: string | undefined) { + const adventureProducts = await getAdventureProducts(); //if keyword is empty, return all products if (!keyword || keyword === undefined) { return adventureProducts; diff --git a/lib/shopify/index.ts b/lib/shopify/index.ts index f7452936e..5f6ee6e8c 100644 --- a/lib/shopify/index.ts +++ b/lib/shopify/index.ts @@ -1,14 +1,4 @@ // @ts-ignore -import { - mockShopifyProduct, - mockCartItem, - mockShopifyCart, - winterCollection, - summerCollection, - europeCollection, - collections, - pages -} from './mock'; import { Cart, Collection, @@ -22,10 +12,14 @@ import { ShopifyCollectionsOperation, ShopifyProduct } from './types'; -import { getCollectionsQuery } from './queries/collection'; -import { TAGS } from '../constants'; -import { shopifyFetch } from './index_old'; -import { adventureProductNodes, getProductByHandle, getProductNodesByKeyword } from './adventures'; +import { getProductByHandle, getProductNodesByKeyword, getStaticCart } from './adventures'; +import { + collections, + europeCollection, + pages, + summerCollection, + winterCollection +} from '../cf/adventures'; const HIDDEN_PRODUCT_TAG = 'hidden'; @@ -49,7 +43,7 @@ const removeEdgesAndNodes = (connection) => { export const createCart = async (): Promise => { const res = mockFetchResponse({ cartCreate: { - cart: mockShopifyCart + cart: await getStaticCart() } }); return reshapeCart(res.body.data.cartCreate.cart); @@ -61,7 +55,7 @@ export const addToCart = async ( ): Promise => { const res = mockFetchResponse({ cartLinesAdd: { - cart: mockShopifyCart + cart: await getStaticCart() } }); return reshapeCart(res.body.data.cartLinesAdd.cart); @@ -70,7 +64,7 @@ export const addToCart = async ( export const removeFromCart = async (cartId: string, lineIds: string[]): Promise => { const res = mockFetchResponse({ cartLinesRemove: { - cart: mockShopifyCart + cart: await getStaticCart() } }); return reshapeCart(res.body.data.cartLinesRemove.cart); @@ -82,7 +76,7 @@ export const updateCart = async ( ): Promise => { const res = mockFetchResponse({ cartLinesUpdate: { - cart: mockShopifyCart + cart: await getStaticCart() } }); return reshapeCart(res.body.data.cartLinesUpdate.cart); @@ -90,7 +84,7 @@ export const updateCart = async ( export const getCart = async (cartId: string): Promise => { const res = mockFetchResponse({ - cart: mockShopifyCart + cart: await getStaticCart() }); return reshapeCart(res.body.data.cart); }; @@ -114,7 +108,7 @@ export const getCollectionProducts = async ({ const res = mockFetchResponse({ collection: { products: { - edges: getProductNodesByKeyword(collection) + edges: await getProductNodesByKeyword(collection) } } }); @@ -227,7 +221,7 @@ export const getPages = async (): Promise => { export const getProduct = async (handle: string): Promise => { const res = mockFetchResponse({ - product: getProductByHandle(handle) + product: await getProductByHandle(handle) }); return reshapeProduct(res.body.data.product, false); }; @@ -235,10 +229,10 @@ export const getProduct = async (handle: string): Promise = export const getProductRecommendations = async (productId: string): Promise => { const res = mockFetchResponse({ productRecommendations: [ - getProductByHandle('climbing-new-zealand'), - getProductByHandle('ski-touring-mont-blanc'), - getProductByHandle('downhill-skiing-wyoming'), - getProductByHandle('cycling-tuscany') + await getProductByHandle('climbing-new-zealand'), + await getProductByHandle('ski-touring-mont-blanc'), + await getProductByHandle('downhill-skiing-wyoming'), + await getProductByHandle('cycling-tuscany') ] }); return reshapeProducts(res.body.data.productRecommendations); @@ -255,7 +249,7 @@ export const getProducts = async ({ }): Promise => { const res = mockFetchResponse({ products: { - edges: getProductNodesByKeyword(query) + edges: await getProductNodesByKeyword(query) } }); return reshapeProducts(removeEdgesAndNodes(res.body.data.products)); diff --git a/lib/shopify/mock.js b/lib/shopify/mock.js deleted file mode 100644 index 2bff98197..000000000 --- a/lib/shopify/mock.js +++ /dev/null @@ -1,178 +0,0 @@ -// Mock data for the defined types - -const { adventureProducts } = require('./adventures'); - -export const mockShopifyProduct = adventureProducts[0]; - -// const mockShopifyProductOld = { -// id: 'product1', -// handle: 'sample-product', -// availableForSale: true, -// title: 'Sample Product', -// description: 'This is a sample product.', -// descriptionHtml: '

This is a sample product.

', -// options: [mockProductOption], -// priceRange: { -// maxVariantPrice: mockMoney, -// minVariantPrice: mockMoney -// }, -// variants: { edges: [{ node: mockProductVariant }] }, -// featuredImage: mockImage, -// images: { edges: [{ node: mockImage }] }, -// seo: { -// title: 'Sample Product', -// description: 'This is a sample product.' -// }, -// tags: ['sample', 'product'], -// updatedAt: '2023-08-10T00:00:00Z' -// }; - -export const mockCartItem = { - id: 'item1', - quantity: 1, - cost: { - totalAmount: { - amount: '100.00', - currencyCode: 'USD' - } - }, - merchandise: { - id: 'merchandise1', - title: 'WKND Adventure', - selectedOptions: [ - { - name: 'Duration', - value: 'Normal' - } - ], - product: mockShopifyProduct - } -}; - -export const mockShopifyCart = { - id: 'cart1', - checkoutUrl: 'https://example.com/checkout', - cost: { - subtotalAmount: { - amount: '90.00', - currencyCode: 'USD' - }, - totalAmount: { - amount: '100.00', - currencyCode: 'USD' - }, - totalTaxAmount: { - amount: '10.00', - currencyCode: 'USD' - } - }, - lines: { edges: [{ node: mockCartItem }] }, - totalQuantity: 1 -}; - -export const winterCollection = { - handle: 'winter-collection', - title: 'Winter', - description: 'Adventures for the winter.', - seo: { - title: 'Winter Collection', - description: 'Adventures for the winter.' - }, - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const summerCollection = { - handle: 'summer-collection', - title: 'Summer', - description: 'Adventures for the summer.', - seo: { - title: 'Summer Collection', - description: 'Adventures for the summer.' - }, - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const europeCollection = { - handle: 'europe-collection', - title: 'Europe', - description: 'Adventures in Europe.', - seo: { - title: 'Europe Collection', - description: 'Adventures in Europe.' - }, - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const tcPage = { - id: 'tc', - title: 'Terms & Conditions', - handle: 'tc', - body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - bodySummary: 'Summary', - seo: { - title: 'Terms & Conditions Page', - description: 'This is a sample page.' - }, - createdAt: '2023-08-01T00:00:00Z', - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const aboutPage = { - id: 'about', - title: 'About', - handle: 'about', - body: 'This website is built with Next.js Commerce, which is a ecommerce template for creating a headless storefront. ', - bodySummary: 'Summary of about page', - seo: { - title: 'About Page', - description: 'This is a sample page.' - }, - createdAt: '2023-08-01T00:00:00Z', - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const faqPage = { - id: 'faq', - title: 'FAQ', - handle: 'faq', - body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - bodySummary: 'Summary of about page', - seo: { - title: 'About Page', - description: 'This is a sample page.' - }, - createdAt: '2023-08-01T00:00:00Z', - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const ppPage = { - id: 'pp', - title: 'Privacy Policy', - handle: 'pp', - body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - bodySummary: 'Summary of about page', - seo: { - title: 'Privacy Page', - description: 'This is a sample page.' - }, - createdAt: '2023-08-01T00:00:00Z', - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const srPage = { - id: 'sr', - title: 'Shipping & Return Policy', - handle: 'sr', - body: 'Shipping & Return Policy Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', - bodySummary: 'Summary of about page', - seo: { - title: 'Privacy Page', - description: 'This is a sample page.' - }, - createdAt: '2023-08-01T00:00:00Z', - updatedAt: '2023-08-10T00:00:00Z' -}; - -export const pages = [tcPage, aboutPage, ppPage, faqPage, srPage]; - -export const collections = [winterCollection, summerCollection, europeCollection]; diff --git a/package.json b/package.json index 9b3e7a9c1..63a2a473e 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,12 @@ "clsx": "^2.0.0", "next": "13.4.2", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "sharp": "^0.32.5" }, "devDependencies": { + "@adobe/aem-headless-client-js": "github:adobe/aem-headless-client-js", + "@adobe/universal-editor-cors": "^1.0.3", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/typography": "^0.5.9", "@types/node": "20.4.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb49eb6e0..5431d3e9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,8 +23,17 @@ dependencies: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + sharp: + specifier: ^0.32.5 + version: 0.32.5 devDependencies: + '@adobe/aem-headless-client-js': + specifier: github:adobe/aem-headless-client-js + version: github.com/adobe/aem-headless-client-js/83792165a5298dbe3e7df39b5b5fba9482651d9b + '@adobe/universal-editor-cors': + specifier: ^1.0.3 + version: 1.0.3 '@tailwindcss/container-queries': specifier: ^0.1.1 version: 0.1.1(tailwindcss@3.3.3) @@ -84,6 +93,14 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@adobe/aio-lib-core-errors@3.1.1: + resolution: {integrity: sha512-xH0BVALN5DxtsLt1PI1Y9IMEd+APpD+VV7GyFoMmWBdS1daNA1Ciy+ASTB6nykQ1bfzllpDY97Q6+OClI8Y0LA==} + dev: true + + /@adobe/universal-editor-cors@1.0.3: + resolution: {integrity: sha512-7p3lEW6PK+ueGQlCWeg/sb2UbFKrM/rbikjj6pDP1cCnbBMmvlDKR58TBDVG6+gHhXZtlU9YnyEtodZTCKm/gA==} + dev: true + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -682,10 +699,18 @@ packages: dequal: 2.0.3 dev: true + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: false + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} @@ -696,6 +721,14 @@ packages: engines: {node: '>=8'} dev: true + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} @@ -728,6 +761,13 @@ packages: update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -808,6 +848,10 @@ packages: fsevents: 2.3.2 dev: true + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} @@ -868,7 +912,6 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} @@ -876,7 +919,21 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -942,6 +999,18 @@ packages: ms: 2.1.2 dev: true + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: false + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -982,6 +1051,11 @@ packages: engines: {node: '>=6'} dev: true + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true @@ -1027,6 +1101,12 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: false + /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} @@ -1460,10 +1540,19 @@ packages: strip-final-newline: 3.0.0 dev: true + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: false + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true + /fast-fifo@1.3.0: + resolution: {integrity: sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==} + dev: false + /fast-glob@3.3.0: resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} @@ -1552,6 +1641,10 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -1610,6 +1703,10 @@ packages: resolve-pkg-maps: 1.0.0 dev: true + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1766,6 +1863,10 @@ packages: engines: {node: '>=14.18.0'} dev: true + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -1798,7 +1899,10 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} @@ -1821,6 +1925,10 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -2172,7 +2280,6 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2201,6 +2308,11 @@ packages: engines: {node: '>=12'} dev: true + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: false + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -2214,7 +2326,10 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true + + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2237,6 +2352,10 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: false + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -2286,6 +2405,17 @@ packages: - babel-plugin-macros dev: false + /node-abi@3.47.0: + resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: false + + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: false + /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true @@ -2390,7 +2520,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -2630,6 +2759,25 @@ packages: source-map-js: 1.0.2 dev: true + /prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.47.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: false + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2704,6 +2852,13 @@ packages: react-is: 16.13.1 dev: true + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -2713,6 +2868,20 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: false + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -2759,6 +2928,15 @@ packages: type-fest: 0.6.0 dev: true + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2871,6 +3049,10 @@ packages: isarray: 2.0.5 dev: true + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -2901,7 +3083,21 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true + + /sharp@0.32.5: + resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.4 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: false /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -2927,6 +3123,24 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2994,6 +3208,13 @@ packages: engines: {node: '>=10.0.0'} dev: false + /streamx@2.15.1: + resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} + dependencies: + fast-fifo: 1.3.0 + queue-tick: 1.0.1 + dev: false + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -3055,6 +3276,12 @@ packages: es-abstract: 1.22.1 dev: true + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3091,6 +3318,11 @@ packages: min-indent: 1.0.1 dev: true + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -3190,6 +3422,42 @@ packages: engines: {node: '>=6'} dev: true + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /tar-stream@3.1.6: + resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.0 + streamx: 2.15.1 + dev: false + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -3253,6 +3521,12 @@ packages: typescript: 5.1.6 dev: true + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -3357,7 +3631,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3415,11 +3688,9 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} @@ -3434,3 +3705,12 @@ packages: /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false + + github.com/adobe/aem-headless-client-js/83792165a5298dbe3e7df39b5b5fba9482651d9b: + resolution: {tarball: https://codeload.github.com/adobe/aem-headless-client-js/tar.gz/83792165a5298dbe3e7df39b5b5fba9482651d9b} + name: '@adobe/aem-headless-client-js' + version: 3.3.1 + engines: {node: '>=14.0.0'} + dependencies: + '@adobe/aio-lib-core-errors': 3.1.1 + dev: true