Add Branding + Tone to Product Descriptions (#39253)
* [Woo AI] generate product descriptions using tone of voice and/or business description context.
This commit is contained in:
parent
d08780f139
commit
9418072a47
|
@ -0,0 +1,4 @@
|
|||
Significance: minor
|
||||
Type: add
|
||||
|
||||
[Woo AI] Add Store Branding data to product description generation prompt.
|
|
@ -29,6 +29,16 @@ class Woo_AI_Settings {
|
|||
*/
|
||||
protected $id = 'woo-ai-settings-tab';
|
||||
|
||||
/**
|
||||
* Tone of voice select options.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $tone_of_voice_select_options;
|
||||
|
||||
private const STORE_DESCRIPTION_OPTION_KEY = 'woo_ai_describe_store_description';
|
||||
private const TONE_OF_VOICE_OPTION_KEY = 'woo_ai_tone_of_voice_select';
|
||||
|
||||
/**
|
||||
* Main Instance.
|
||||
*/
|
||||
|
@ -44,10 +54,64 @@ class Woo_AI_Settings {
|
|||
add_action( 'admin_enqueue_scripts', array( $this, 'add_woo_ai_settings_script' ) );
|
||||
add_action( 'woocommerce_settings_save_advanced', array( $this, 'action_save_woo_ai_settings_tab' ) );
|
||||
add_action( 'woocommerce_settings_page_init', array( $this, 'add_ui' ) );
|
||||
add_filter( 'woocommerce_settings_groups', array( $this, 'add_woo_ai_settings_group' ) );
|
||||
add_filter( 'woocommerce_settings-woo-ai', array( $this, 'add_woo_ai_settings_group_settings' ) );
|
||||
|
||||
$this->tone_of_voice_select_options = array(
|
||||
'informal' => __( 'Informal', 'woocommerce' ),
|
||||
'humorous' => __( 'Humorous', 'woocommerce' ),
|
||||
'neutral' => __( 'Neutral', 'woocommerce' ),
|
||||
'youthful' => __( 'Youthful', 'woocommerce' ),
|
||||
'formal' => __( 'Formal', 'woocommerce' ),
|
||||
'motivational' => __( 'Motivational', 'woocommerce' ),
|
||||
);
|
||||
|
||||
$this->add_sanitization_hooks();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds settings which can be retrieved via the WooCommerce Settings API.
|
||||
*
|
||||
* @see https://github.com/woocommerce/woocommerce/wiki/Settings-API
|
||||
*
|
||||
* @param array $settings The original settings array.
|
||||
* @return array The modified settings array.
|
||||
*/
|
||||
public function add_woo_ai_settings_group_settings( $settings ) {
|
||||
$settings[] = array(
|
||||
'id' => 'tone-of-voice',
|
||||
'option_key' => self::TONE_OF_VOICE_OPTION_KEY,
|
||||
'label' => __( 'Storewide Tone of Voice', 'woocommerce' ),
|
||||
'description' => __( 'This controls the conversational tone that will be used when generating content.', 'woocommerce' ),
|
||||
'default' => 'neutral',
|
||||
'type' => 'select',
|
||||
'options' => $this->tone_of_voice_select_options,
|
||||
);
|
||||
$settings[] = array(
|
||||
'id' => 'store-description',
|
||||
'option_key' => self::STORE_DESCRIPTION_OPTION_KEY,
|
||||
'label' => __( 'Store Description', 'woocommerce' ),
|
||||
'description' => __( 'This is a short description of your store which could be used to help generate content.', 'woocommerce' ),
|
||||
'type' => 'textarea',
|
||||
);
|
||||
return $settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register our Woo AI plugin group to the WooCommerce Settings API.
|
||||
*
|
||||
* @param array $locations The original settings array.
|
||||
* @return array The modified settings array.
|
||||
*/
|
||||
public function add_woo_ai_settings_group( $locations ) {
|
||||
$locations[] = array(
|
||||
'id' => 'woo-ai',
|
||||
'label' => __( 'Woo AI', 'woocommerce' ),
|
||||
'description' => __( 'Settings for the Woo AI plugin.', 'woocommerce' ),
|
||||
);
|
||||
return $locations;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add UI related hooks.
|
||||
*/
|
||||
|
@ -147,25 +211,18 @@ class Woo_AI_Settings {
|
|||
|
||||
array(
|
||||
'title' => __( 'Tone of voice', 'woocommerce' ),
|
||||
'id' => 'woo_ai_tone_of_voice_select',
|
||||
'id' => self::TONE_OF_VOICE_OPTION_KEY,
|
||||
'css' => 'min-width:300px;',
|
||||
'default' => 'neutral',
|
||||
'type' => 'select',
|
||||
'desc' => $markup_str,
|
||||
'desc_tip' => __( 'Choose the language style that best resonates with your customers. It\'ll be used in text-based content, like product descriptions.', 'woocommerce' ),
|
||||
'custom_attributes' => array( 'disabled' => 'true' ),
|
||||
'options' => array(
|
||||
'informal' => esc_html__( 'Informal', 'woocommerce' ),
|
||||
'humorous' => esc_html__( 'Humorous', 'woocommerce' ),
|
||||
'neutral' => esc_html__( 'Neutral', 'woocommerce' ),
|
||||
'youthful' => esc_html__( 'Youthful', 'woocommerce' ),
|
||||
'formal' => esc_html__( 'Formal', 'woocommerce' ),
|
||||
'motivational' => esc_html__( 'Motivational', 'woocommerce' ),
|
||||
),
|
||||
'options' => $this->tone_of_voice_select_options,
|
||||
),
|
||||
|
||||
array(
|
||||
'id' => 'woo_ai_describe_store_description',
|
||||
'id' => self::STORE_DESCRIPTION_OPTION_KEY,
|
||||
'type' => 'textarea',
|
||||
'custom_attributes' => array( 'disabled' => 'true' ),
|
||||
'title' => __( 'Describe your business', 'woocommerce' ),
|
||||
|
|
|
@ -39,9 +39,11 @@
|
|||
"@wordpress/element": "wp-6.0",
|
||||
"@wordpress/hooks": "wp-6.0",
|
||||
"@wordpress/i18n": "wp-6.0",
|
||||
"@wordpress/notices": "wp-6.0",
|
||||
"@wordpress/plugins": "wp-6.0",
|
||||
"debug": "^4.3.3",
|
||||
"prop-types": "^15.8.1"
|
||||
"prop-types": "^15.8.1",
|
||||
"react-query": "^3.39.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^17.0.2",
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
declare module '@wordpress/notices';
|
||||
declare module '@wordpress/data';
|
|
@ -1,3 +1,4 @@
|
|||
export * from './useTinyEditor';
|
||||
export * from './useFeedbackSnackbar';
|
||||
export * from './useProductSlug';
|
||||
export * from './useStoreBranding';
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
/**
|
||||
* External dependencies
|
||||
*/
|
||||
import { useEffect } from 'react';
|
||||
import { useQuery, UseQueryResult } from 'react-query';
|
||||
|
||||
/**
|
||||
* Internal dependencies
|
||||
*/
|
||||
import { getToneOfVoice, getBusinessDescription } from '../utils/branding';
|
||||
|
||||
// Define your data type
|
||||
interface BrandingData {
|
||||
toneOfVoice: string;
|
||||
businessDescription: string;
|
||||
}
|
||||
|
||||
// Define your error type
|
||||
interface BrandingError {
|
||||
message: string;
|
||||
}
|
||||
|
||||
type UseStoreBrandingOptions = {
|
||||
onError?: ( error: BrandingError ) => void;
|
||||
};
|
||||
|
||||
// Async function to fetch branding data
|
||||
async function fetchBrandingData(): Promise< BrandingData > {
|
||||
const [ toneOfVoice, businessDescription ] = await Promise.all( [
|
||||
getToneOfVoice(),
|
||||
getBusinessDescription(),
|
||||
] );
|
||||
|
||||
return { toneOfVoice, businessDescription };
|
||||
}
|
||||
|
||||
export function useStoreBranding( {
|
||||
onError,
|
||||
}: UseStoreBrandingOptions = {} ): UseQueryResult<
|
||||
BrandingData,
|
||||
BrandingError
|
||||
> {
|
||||
const result = useQuery< BrandingData, BrandingError >(
|
||||
'storeBranding',
|
||||
fetchBrandingData,
|
||||
{
|
||||
refetchOnWindowFocus: false, // Do not refetch when window gains focus
|
||||
}
|
||||
);
|
||||
|
||||
useEffect( () => {
|
||||
if ( result.isError && onError ) {
|
||||
onError( result.error as BrandingError );
|
||||
}
|
||||
}, [ result.isError, result.error, onError ] );
|
||||
|
||||
return result;
|
||||
}
|
|
@ -2,6 +2,7 @@
|
|||
* External dependencies
|
||||
*/
|
||||
import { render, createRoot } from '@wordpress/element';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
|
||||
/**
|
||||
* Internal dependencies
|
||||
|
@ -11,15 +12,23 @@ import { ProductNameSuggestions } from './product-name';
|
|||
|
||||
import './index.scss';
|
||||
|
||||
const queryClient = new QueryClient();
|
||||
|
||||
const renderComponent = ( Component, rootElement ) => {
|
||||
if ( ! rootElement ) {
|
||||
return;
|
||||
}
|
||||
|
||||
const WrappedComponent = () => (
|
||||
<QueryClientProvider client={ queryClient }>
|
||||
<Component />
|
||||
</QueryClientProvider>
|
||||
);
|
||||
|
||||
if ( createRoot ) {
|
||||
createRoot( rootElement ).render( <Component /> );
|
||||
createRoot( rootElement ).render( <WrappedComponent /> );
|
||||
} else {
|
||||
render( <Component />, rootElement );
|
||||
render( <WrappedComponent />, rootElement );
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
/**
|
||||
* External dependencies
|
||||
*/
|
||||
import { useDispatch } from '@wordpress/data';
|
||||
import { store as noticesStore } from '@wordpress/notices';
|
||||
import { __ } from '@wordpress/i18n';
|
||||
import { useState, useEffect, useRef } from '@wordpress/element';
|
||||
import {
|
||||
__experimentalUseCompletion as useCompletion,
|
||||
UseCompletionError,
|
||||
} from '@woocommerce/ai';
|
||||
import { useDispatch } from '@wordpress/data';
|
||||
|
||||
/**
|
||||
* Internal dependencies
|
||||
|
@ -18,7 +19,7 @@ import {
|
|||
WOO_AI_PLUGIN_FEATURE_NAME,
|
||||
} from '../constants';
|
||||
import { StopCompletionBtn, WriteItForMeBtn } from '../components';
|
||||
import { useFeedbackSnackbar, useTinyEditor } from '../hooks';
|
||||
import { useFeedbackSnackbar, useStoreBranding, useTinyEditor } from '../hooks';
|
||||
import {
|
||||
getProductName,
|
||||
getPostId,
|
||||
|
@ -65,6 +66,28 @@ export function WriteItForMeButtonContainer() {
|
|||
const [ productTitle, setProductTitle ] = useState< string >(
|
||||
titleEl.current?.value || ''
|
||||
);
|
||||
|
||||
const { createErrorNotice } = useDispatch( noticesStore );
|
||||
const [ errorNoticeDismissed, setErrorNoticeDismissed ] = useState( false );
|
||||
const { data: brandingData } = useStoreBranding( {
|
||||
onError: () => {
|
||||
if ( ! errorNoticeDismissed ) {
|
||||
createErrorNotice(
|
||||
__(
|
||||
'Error fetching branding data, content generation may be degraded.',
|
||||
'woocommerce'
|
||||
),
|
||||
{
|
||||
id: 'woo-ai-branding-error',
|
||||
type: 'snackbar',
|
||||
isDismissible: true,
|
||||
onDismiss: () => setErrorNoticeDismissed( true ),
|
||||
}
|
||||
);
|
||||
}
|
||||
},
|
||||
} );
|
||||
|
||||
const tinyEditor = useTinyEditor();
|
||||
const shortTinyEditor = useTinyEditor( 'excerpt' );
|
||||
|
||||
|
@ -174,7 +197,7 @@ export function WriteItForMeButtonContainer() {
|
|||
productPropsInstructions.push(
|
||||
`Tagged with: ${ productTags.join( ', ' ) }.`
|
||||
);
|
||||
includedProps.push( 'categories' );
|
||||
includedProps.push( 'tags' );
|
||||
}
|
||||
productAttributes.forEach( ( { name, values } ) => {
|
||||
productPropsInstructions.push(
|
||||
|
@ -183,21 +206,41 @@ export function WriteItForMeButtonContainer() {
|
|||
includedProps.push( name );
|
||||
} );
|
||||
|
||||
return [
|
||||
`Compose an engaging product description for a product named "${ productName.slice(
|
||||
0,
|
||||
MAX_TITLE_LENGTH
|
||||
) }".`,
|
||||
// WooCommerce doesn't set a limit for the product title. Set a limit to control the token usage.
|
||||
const truncatedProductName = productName.slice( 0, MAX_TITLE_LENGTH );
|
||||
|
||||
const instructions = [
|
||||
`Compose an engaging product description for a product named "${ truncatedProductName }."`,
|
||||
...productPropsInstructions,
|
||||
'Identify the language used in the product name, and craft the description in the same language.',
|
||||
`Use a 9th grade reading level.`,
|
||||
`Ensure the description is concise, containing no more than ${ DESCRIPTION_MAX_LENGTH } words.`,
|
||||
'Structure the content into paragraphs using <p> tags, and use HTML elements like <strong> and <em> for emphasis.',
|
||||
'Only if appropriate, use <ul> and <li> for listing product features.',
|
||||
`Avoid including the properties (${ includedProps.join(
|
||||
', '
|
||||
) }) directly in the description, but utilize them to create an engaging and enticing portrayal of the product.`,
|
||||
'Do not include a top-level heading at the beginning description.',
|
||||
].join( ' ' );
|
||||
'Identify the language used in the product name, and craft the description in the same language.',
|
||||
'Only if appropriate, use <ul> and <li> tags to list product features.',
|
||||
'Do not include a top-level heading at the beginning of the description.',
|
||||
];
|
||||
|
||||
if ( includedProps.length > 0 ) {
|
||||
instructions.push(
|
||||
`Avoid including the properties (${ includedProps.join(
|
||||
', '
|
||||
) }) directly in the description, but utilize them to create an engaging and enticing portrayal of the product.`
|
||||
);
|
||||
}
|
||||
|
||||
if ( brandingData?.toneOfVoice ) {
|
||||
instructions.push(
|
||||
`Generate the description using a ${ brandingData.toneOfVoice } tone.`
|
||||
);
|
||||
}
|
||||
|
||||
if ( brandingData?.businessDescription ) {
|
||||
instructions.push(
|
||||
`For more context on the business, refer to the following business description: "${ brandingData.businessDescription }."`
|
||||
);
|
||||
}
|
||||
|
||||
return instructions.join( '\n' );
|
||||
};
|
||||
|
||||
const onWriteItForMeClick = async () => {
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
/**
|
||||
* External dependencies
|
||||
*/
|
||||
import apiFetch from '@wordpress/api-fetch';
|
||||
|
||||
// Define the expected shape of the API response
|
||||
type ApiResponse = {
|
||||
value: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetch the tone of voice setting.
|
||||
*
|
||||
* @return {Promise<string>} A promise that resolves with the tone of voice or 'neutral' if the API call fails.
|
||||
*/
|
||||
export async function getToneOfVoice(): Promise< string > {
|
||||
try {
|
||||
const { value } = await apiFetch< ApiResponse >( {
|
||||
path: '/wc/v3/settings/woo-ai/tone-of-voice',
|
||||
} );
|
||||
return value;
|
||||
} catch ( error ) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the business description setting.
|
||||
*
|
||||
* @return {Promise<string>} A promise that resolves with the business description.
|
||||
*/
|
||||
export async function getBusinessDescription(): Promise< string > {
|
||||
try {
|
||||
const { value } = await apiFetch< ApiResponse >( {
|
||||
path: '/wc/v3/settings/woo-ai/store-description',
|
||||
} );
|
||||
return value;
|
||||
} catch ( error ) {
|
||||
throw error;
|
||||
}
|
||||
}
|
145
pnpm-lock.yaml
145
pnpm-lock.yaml
|
@ -445,7 +445,7 @@ importers:
|
|||
version: 0.1.3
|
||||
jest-runner-groups:
|
||||
specifier: ^2.1.0
|
||||
version: 2.2.0(jest-docblock@29.4.3)(jest-runner@29.5.0)
|
||||
version: 2.2.0(jest-docblock@29.4.3)(jest-runner@29.6.2)
|
||||
postman-collection:
|
||||
specifier: ^4.1.0
|
||||
version: 4.1.5
|
||||
|
@ -1264,7 +1264,7 @@ importers:
|
|||
version: 0.2.0
|
||||
'@woocommerce/e2e-utils':
|
||||
specifier: ^0.1.6
|
||||
version: 0.1.6(@woocommerce/api@0.2.0)(jest@27.5.1)(puppeteer@2.1.1)(react-native@0.70.0)
|
||||
version: 0.1.6(@woocommerce/api@0.2.0)(jest@29.6.2)(puppeteer@2.1.1)(react-native@0.70.0)
|
||||
'@wordpress/deprecated':
|
||||
specifier: wp-6.0
|
||||
version: 3.6.1
|
||||
|
@ -1434,7 +1434,7 @@ importers:
|
|||
version: 3.6.1
|
||||
'@wordpress/e2e-test-utils':
|
||||
specifier: wp-6.0
|
||||
version: 7.2.1(jest@27.5.1)(puppeteer-core@19.7.3)
|
||||
version: 7.2.1(jest@29.6.2)(puppeteer-core@19.7.3)
|
||||
config:
|
||||
specifier: 3.3.7
|
||||
version: 3.3.7
|
||||
|
@ -2487,6 +2487,9 @@ importers:
|
|||
'@wordpress/i18n':
|
||||
specifier: wp-6.0
|
||||
version: 4.6.1
|
||||
'@wordpress/notices':
|
||||
specifier: wp-6.0
|
||||
version: 3.6.1(react@17.0.2)
|
||||
'@wordpress/plugins':
|
||||
specifier: wp-6.0
|
||||
version: 4.4.3(react@17.0.2)
|
||||
|
@ -2502,6 +2505,9 @@ importers:
|
|||
react-dom:
|
||||
specifier: ^17.0.2
|
||||
version: 17.0.2(react@17.0.2)
|
||||
react-query:
|
||||
specifier: ^3.39.3
|
||||
version: 3.39.3(react-dom@17.0.2)(react@17.0.2)
|
||||
devDependencies:
|
||||
'@types/debug':
|
||||
specifier: ^4.1.7
|
||||
|
@ -4040,7 +4046,7 @@ packages:
|
|||
debug: 4.3.3
|
||||
i18n-calypso: 6.0.1(@types/react@17.0.50)(react@17.0.2)
|
||||
react: 17.0.2
|
||||
react-query: 3.39.1(react-dom@17.0.2)(react@17.0.2)
|
||||
react-query: 3.39.3(react-dom@17.0.2)(react@17.0.2)
|
||||
socket.io-client: 2.3.0
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
|
@ -4191,7 +4197,7 @@ packages:
|
|||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/core': 7.21.3
|
||||
'@jridgewell/trace-mapping': 0.3.16
|
||||
'@jridgewell/trace-mapping': 0.3.19
|
||||
commander: 4.1.1
|
||||
convert-source-map: 1.8.0
|
||||
fs-readdir-recursive: 1.1.0
|
||||
|
@ -10855,6 +10861,7 @@ packages:
|
|||
jest-message-util: 29.5.0
|
||||
jest-util: 29.5.0
|
||||
slash: 3.0.0
|
||||
dev: true
|
||||
|
||||
/@jest/console@29.6.2:
|
||||
resolution: {integrity: sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w==}
|
||||
|
@ -10866,7 +10873,6 @@ packages:
|
|||
jest-message-util: 29.6.2
|
||||
jest-util: 29.6.2
|
||||
slash: 3.0.0
|
||||
dev: true
|
||||
|
||||
/@jest/core@24.9.0:
|
||||
resolution: {integrity: sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==}
|
||||
|
@ -11112,7 +11118,6 @@ packages:
|
|||
- babel-plugin-macros
|
||||
- supports-color
|
||||
- ts-node
|
||||
dev: true
|
||||
|
||||
/@jest/create-cache-key-function@27.5.1:
|
||||
resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==}
|
||||
|
@ -11168,6 +11173,7 @@ packages:
|
|||
'@jest/types': 29.5.0
|
||||
'@types/node': 16.18.21
|
||||
jest-mock: 29.5.0
|
||||
dev: true
|
||||
|
||||
/@jest/environment@29.6.2:
|
||||
resolution: {integrity: sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==}
|
||||
|
@ -11177,20 +11183,19 @@ packages:
|
|||
'@jest/types': 29.6.1
|
||||
'@types/node': 16.18.21
|
||||
jest-mock: 29.6.2
|
||||
dev: true
|
||||
|
||||
/@jest/expect-utils@29.5.0:
|
||||
resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
jest-get-type: 29.4.3
|
||||
dev: true
|
||||
|
||||
/@jest/expect-utils@29.6.2:
|
||||
resolution: {integrity: sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
jest-get-type: 29.4.3
|
||||
dev: true
|
||||
|
||||
/@jest/expect@29.5.0:
|
||||
resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==}
|
||||
|
@ -11200,6 +11205,7 @@ packages:
|
|||
jest-snapshot: 29.5.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/expect@29.6.2:
|
||||
resolution: {integrity: sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==}
|
||||
|
@ -11209,7 +11215,6 @@ packages:
|
|||
jest-snapshot: 29.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/fake-timers@24.9.0:
|
||||
resolution: {integrity: sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==}
|
||||
|
@ -11266,6 +11271,7 @@ packages:
|
|||
jest-message-util: 29.5.0
|
||||
jest-mock: 29.5.0
|
||||
jest-util: 29.5.0
|
||||
dev: true
|
||||
|
||||
/@jest/fake-timers@29.6.2:
|
||||
resolution: {integrity: sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==}
|
||||
|
@ -11277,7 +11283,6 @@ packages:
|
|||
jest-message-util: 29.6.2
|
||||
jest-mock: 29.6.2
|
||||
jest-util: 29.6.2
|
||||
dev: true
|
||||
|
||||
/@jest/globals@25.5.2:
|
||||
resolution: {integrity: sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==}
|
||||
|
@ -11315,6 +11320,7 @@ packages:
|
|||
jest-mock: 29.5.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/globals@29.6.2:
|
||||
resolution: {integrity: sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==}
|
||||
|
@ -11326,7 +11332,6 @@ packages:
|
|||
jest-mock: 29.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/reporters@24.9.0:
|
||||
resolution: {integrity: sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==}
|
||||
|
@ -11536,20 +11541,19 @@ packages:
|
|||
v8-to-istanbul: 9.1.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/schemas@29.4.3:
|
||||
resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@sinclair/typebox': 0.25.24
|
||||
dev: true
|
||||
|
||||
/@jest/schemas@29.6.0:
|
||||
resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@sinclair/typebox': 0.27.8
|
||||
dev: true
|
||||
|
||||
/@jest/source-map@24.9.0:
|
||||
resolution: {integrity: sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==}
|
||||
|
@ -11593,6 +11597,7 @@ packages:
|
|||
'@jridgewell/trace-mapping': 0.3.17
|
||||
callsites: 3.1.0
|
||||
graceful-fs: 4.2.9
|
||||
dev: true
|
||||
|
||||
/@jest/source-map@29.6.0:
|
||||
resolution: {integrity: sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==}
|
||||
|
@ -11601,7 +11606,6 @@ packages:
|
|||
'@jridgewell/trace-mapping': 0.3.19
|
||||
callsites: 3.1.0
|
||||
graceful-fs: 4.2.9
|
||||
dev: true
|
||||
|
||||
/@jest/test-result@24.9.0:
|
||||
resolution: {integrity: sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==}
|
||||
|
@ -11649,6 +11653,7 @@ packages:
|
|||
'@jest/types': 29.5.0
|
||||
'@types/istanbul-lib-coverage': 2.0.3
|
||||
collect-v8-coverage: 1.0.1
|
||||
dev: true
|
||||
|
||||
/@jest/test-result@29.6.2:
|
||||
resolution: {integrity: sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw==}
|
||||
|
@ -11658,7 +11663,6 @@ packages:
|
|||
'@jest/types': 29.6.1
|
||||
'@types/istanbul-lib-coverage': 2.0.3
|
||||
collect-v8-coverage: 1.0.1
|
||||
dev: true
|
||||
|
||||
/@jest/test-sequencer@24.9.0:
|
||||
resolution: {integrity: sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==}
|
||||
|
@ -11736,7 +11740,6 @@ packages:
|
|||
graceful-fs: 4.2.9
|
||||
jest-haste-map: 29.6.2
|
||||
slash: 3.0.0
|
||||
dev: true
|
||||
|
||||
/@jest/transform@24.9.0:
|
||||
resolution: {integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==}
|
||||
|
@ -11851,6 +11854,7 @@ packages:
|
|||
write-file-atomic: 4.0.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/transform@29.6.2:
|
||||
resolution: {integrity: sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==}
|
||||
|
@ -11873,7 +11877,6 @@ packages:
|
|||
write-file-atomic: 4.0.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@jest/types@24.9.0:
|
||||
resolution: {integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==}
|
||||
|
@ -11924,6 +11927,7 @@ packages:
|
|||
'@types/node': 16.18.21
|
||||
'@types/yargs': 17.0.24
|
||||
chalk: 4.1.2
|
||||
dev: true
|
||||
|
||||
/@jest/types@29.6.1:
|
||||
resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==}
|
||||
|
@ -11935,7 +11939,6 @@ packages:
|
|||
'@types/node': 16.18.21
|
||||
'@types/yargs': 17.0.24
|
||||
chalk: 4.1.2
|
||||
dev: true
|
||||
|
||||
/@jridgewell/gen-mapping@0.1.1:
|
||||
resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
|
||||
|
@ -11968,6 +11971,7 @@ packages:
|
|||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.1.0
|
||||
'@jridgewell/sourcemap-codec': 1.4.14
|
||||
dev: true
|
||||
|
||||
/@jridgewell/trace-mapping@0.3.17:
|
||||
resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==}
|
||||
|
@ -11980,7 +11984,6 @@ packages:
|
|||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.1.0
|
||||
'@jridgewell/sourcemap-codec': 1.4.14
|
||||
dev: true
|
||||
|
||||
/@jridgewell/trace-mapping@0.3.9:
|
||||
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
|
||||
|
@ -13271,10 +13274,10 @@ packages:
|
|||
|
||||
/@sinclair/typebox@0.25.24:
|
||||
resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==}
|
||||
dev: true
|
||||
|
||||
/@sinclair/typebox@0.27.8:
|
||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||
dev: true
|
||||
|
||||
/@sindresorhus/is@4.6.0:
|
||||
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
|
||||
|
@ -17833,14 +17836,14 @@ packages:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/@woocommerce/e2e-utils@0.1.6(@woocommerce/api@0.2.0)(jest@27.5.1)(puppeteer@2.1.1)(react-native@0.70.0):
|
||||
/@woocommerce/e2e-utils@0.1.6(@woocommerce/api@0.2.0)(jest@29.6.2)(puppeteer@2.1.1)(react-native@0.70.0):
|
||||
resolution: {integrity: sha512-gWSEgFIjMqaqiiIyrpa1epIHkmBBAfk6WfRojva1f5ZmffSJCc0VbX2jQQRdFm1BuEYr8KGCCYo+q8NIjlMZ7g==}
|
||||
peerDependencies:
|
||||
'@woocommerce/api': ^0.2.0
|
||||
dependencies:
|
||||
'@woocommerce/api': 0.2.0
|
||||
'@wordpress/deprecated': 2.12.3
|
||||
'@wordpress/e2e-test-utils': 4.16.1(jest@27.5.1)(puppeteer@2.1.1)(react-native@0.70.0)
|
||||
'@wordpress/e2e-test-utils': 4.16.1(jest@29.6.2)(puppeteer@2.1.1)(react-native@0.70.0)
|
||||
config: 3.3.3
|
||||
faker: 5.5.3
|
||||
fishery: 1.4.0
|
||||
|
@ -19519,7 +19522,26 @@ packages:
|
|||
- react-native
|
||||
dev: false
|
||||
|
||||
/@wordpress/e2e-test-utils@7.2.1(jest@27.5.1)(puppeteer-core@19.7.3):
|
||||
/@wordpress/e2e-test-utils@4.16.1(jest@29.6.2)(puppeteer@2.1.1)(react-native@0.70.0):
|
||||
resolution: {integrity: sha512-Dpsq5m0VSvjIhro2MjACSzkOkOf1jGEryzgEMW1ikbT6YI+motspHfGtisKXgYhZJOnjV4PwuEg+9lPVnd971g==}
|
||||
engines: {node: '>=8'}
|
||||
peerDependencies:
|
||||
jest: '>=24'
|
||||
puppeteer: '>=1.19.0'
|
||||
dependencies:
|
||||
'@babel/runtime': 7.21.0
|
||||
'@wordpress/keycodes': 2.19.3
|
||||
'@wordpress/url': 2.22.2(react-native@0.70.0)
|
||||
jest: 29.6.2(@types/node@16.18.21)(ts-node@10.9.1)
|
||||
lodash: 4.17.21
|
||||
node-fetch: 2.6.7
|
||||
puppeteer: 2.1.1
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- react-native
|
||||
dev: false
|
||||
|
||||
/@wordpress/e2e-test-utils@7.2.1(jest@29.6.2)(puppeteer-core@19.7.3):
|
||||
resolution: {integrity: sha512-eqo4quzgGFArZLLocC5sPfdCLiiS9zMTCRs+Kn4Tl4lLDOLhTk9I1MZcBkvJJ0Qd75FEcdeLaqNaSYNCu6rgyw==}
|
||||
engines: {node: '>=12'}
|
||||
peerDependencies:
|
||||
|
@ -19531,7 +19553,7 @@ packages:
|
|||
'@wordpress/keycodes': 3.6.1
|
||||
'@wordpress/url': 3.7.1
|
||||
form-data: 4.0.0
|
||||
jest: 27.5.1
|
||||
jest: 29.6.2(@types/node@16.18.21)(ts-node@10.9.1)
|
||||
lodash: 4.17.21
|
||||
node-fetch: 2.6.7
|
||||
puppeteer-core: 19.7.3(typescript@5.1.6)
|
||||
|
@ -22022,10 +22044,10 @@ packages:
|
|||
peerDependencies:
|
||||
eslint: '>= 4.12.1'
|
||||
dependencies:
|
||||
'@babel/code-frame': 7.16.7
|
||||
'@babel/parser': 7.17.8
|
||||
'@babel/traverse': 7.17.3
|
||||
'@babel/types': 7.17.0
|
||||
'@babel/code-frame': 7.18.6
|
||||
'@babel/parser': 7.21.3
|
||||
'@babel/traverse': 7.21.3
|
||||
'@babel/types': 7.22.4
|
||||
eslint: 7.32.0
|
||||
eslint-visitor-keys: 1.3.0
|
||||
resolve: 1.20.0
|
||||
|
@ -22248,7 +22270,6 @@ packages:
|
|||
slash: 3.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/babel-loader@8.2.3(@babel/core@7.17.8)(webpack@5.70.0):
|
||||
resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==}
|
||||
|
@ -22452,7 +22473,6 @@ packages:
|
|||
'@babel/types': 7.22.4
|
||||
'@types/babel__core': 7.1.16
|
||||
'@types/babel__traverse': 7.14.2
|
||||
dev: true
|
||||
|
||||
/babel-plugin-macros@2.8.0:
|
||||
resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==}
|
||||
|
@ -22988,7 +23008,6 @@ packages:
|
|||
'@babel/core': 7.21.3
|
||||
babel-plugin-jest-hoist: 29.5.0
|
||||
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.3)
|
||||
dev: true
|
||||
|
||||
/babel-runtime@6.26.0:
|
||||
resolution: {integrity: sha1-llxwWGaOgrVde/4E/yM3vItWR/4=}
|
||||
|
@ -25713,7 +25732,6 @@ packages:
|
|||
peerDependenciesMeta:
|
||||
babel-plugin-macros:
|
||||
optional: true
|
||||
dev: true
|
||||
|
||||
/deep-eql@3.0.1:
|
||||
resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==}
|
||||
|
@ -27792,7 +27810,8 @@ packages:
|
|||
jest-get-type: 29.4.3
|
||||
jest-matcher-utils: 29.5.0
|
||||
jest-message-util: 29.5.0
|
||||
jest-util: 29.5.0
|
||||
jest-util: 29.6.2
|
||||
dev: true
|
||||
|
||||
/expect@29.6.2:
|
||||
resolution: {integrity: sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==}
|
||||
|
@ -27804,7 +27823,6 @@ packages:
|
|||
jest-matcher-utils: 29.6.2
|
||||
jest-message-util: 29.6.2
|
||||
jest-util: 29.6.2
|
||||
dev: true
|
||||
|
||||
/expose-loader@3.1.0(webpack@5.70.0):
|
||||
resolution: {integrity: sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==}
|
||||
|
@ -31520,7 +31538,6 @@ packages:
|
|||
dependencies:
|
||||
execa: 5.1.1
|
||||
p-limit: 3.1.0
|
||||
dev: true
|
||||
|
||||
/jest-circus@26.6.3:
|
||||
resolution: {integrity: sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==}
|
||||
|
@ -31636,7 +31653,6 @@ packages:
|
|||
transitivePeerDependencies:
|
||||
- babel-plugin-macros
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-cli@24.9.0:
|
||||
resolution: {integrity: sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==}
|
||||
|
@ -31798,7 +31814,6 @@ packages:
|
|||
- babel-plugin-macros
|
||||
- supports-color
|
||||
- ts-node
|
||||
dev: true
|
||||
|
||||
/jest-config@24.9.0:
|
||||
resolution: {integrity: sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==}
|
||||
|
@ -32009,7 +32024,6 @@ packages:
|
|||
transitivePeerDependencies:
|
||||
- babel-plugin-macros
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-dev-server@4.4.0:
|
||||
resolution: {integrity: sha512-STEHJ3iPSC8HbrQ3TME0ozGX2KT28lbT4XopPxUm2WimsX3fcB3YOptRh12YphQisMhfqNSNTZUmWyT3HEXS2A==}
|
||||
|
@ -32100,6 +32114,7 @@ packages:
|
|||
diff-sequences: 29.4.3
|
||||
jest-get-type: 29.4.3
|
||||
pretty-format: 29.5.0
|
||||
dev: true
|
||||
|
||||
/jest-diff@29.6.2:
|
||||
resolution: {integrity: sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==}
|
||||
|
@ -32109,7 +32124,6 @@ packages:
|
|||
diff-sequences: 29.4.3
|
||||
jest-get-type: 29.4.3
|
||||
pretty-format: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-docblock@24.9.0:
|
||||
resolution: {integrity: sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==}
|
||||
|
@ -32193,10 +32207,10 @@ packages:
|
|||
resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/types': 29.5.0
|
||||
'@jest/types': 29.6.1
|
||||
chalk: 4.1.2
|
||||
jest-get-type: 29.4.3
|
||||
jest-util: 29.5.0
|
||||
jest-util: 29.6.2
|
||||
pretty-format: 29.5.0
|
||||
dev: true
|
||||
|
||||
|
@ -32209,7 +32223,6 @@ packages:
|
|||
jest-get-type: 29.4.3
|
||||
jest-util: 29.6.2
|
||||
pretty-format: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-environment-jsdom@24.9.0:
|
||||
resolution: {integrity: sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==}
|
||||
|
@ -32359,6 +32372,7 @@ packages:
|
|||
'@types/node': 16.18.21
|
||||
jest-mock: 29.5.0
|
||||
jest-util: 29.5.0
|
||||
dev: true
|
||||
|
||||
/jest-environment-node@29.6.2:
|
||||
resolution: {integrity: sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==}
|
||||
|
@ -32370,7 +32384,6 @@ packages:
|
|||
'@types/node': 16.18.21
|
||||
jest-mock: 29.6.2
|
||||
jest-util: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-environment-puppeteer@4.4.0:
|
||||
resolution: {integrity: sha512-iV8S8+6qkdTM6OBR/M9gKywEk8GDSOe05hspCs5D8qKSwtmlUfdtHfB4cakdc68lC6YfK3AUsLirpfgodCHjzQ==}
|
||||
|
@ -32519,6 +32532,7 @@ packages:
|
|||
walker: 1.0.8
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/jest-haste-map@29.6.2:
|
||||
resolution: {integrity: sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==}
|
||||
|
@ -32537,7 +32551,6 @@ packages:
|
|||
walker: 1.0.8
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/jest-jasmine2@24.9.0:
|
||||
resolution: {integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==}
|
||||
|
@ -32682,6 +32695,7 @@ packages:
|
|||
dependencies:
|
||||
jest-get-type: 29.4.3
|
||||
pretty-format: 29.5.0
|
||||
dev: true
|
||||
|
||||
/jest-leak-detector@29.6.2:
|
||||
resolution: {integrity: sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ==}
|
||||
|
@ -32689,7 +32703,6 @@ packages:
|
|||
dependencies:
|
||||
jest-get-type: 29.4.3
|
||||
pretty-format: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-matcher-utils@24.9.0:
|
||||
resolution: {integrity: sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==}
|
||||
|
@ -32737,6 +32750,7 @@ packages:
|
|||
jest-diff: 29.5.0
|
||||
jest-get-type: 29.4.3
|
||||
pretty-format: 29.5.0
|
||||
dev: true
|
||||
|
||||
/jest-matcher-utils@29.6.2:
|
||||
resolution: {integrity: sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==}
|
||||
|
@ -32746,7 +32760,6 @@ packages:
|
|||
jest-diff: 29.6.2
|
||||
jest-get-type: 29.4.3
|
||||
pretty-format: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-message-util@24.9.0:
|
||||
resolution: {integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==}
|
||||
|
@ -32820,6 +32833,7 @@ packages:
|
|||
pretty-format: 29.5.0
|
||||
slash: 3.0.0
|
||||
stack-utils: 2.0.5
|
||||
dev: true
|
||||
|
||||
/jest-message-util@29.6.2:
|
||||
resolution: {integrity: sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==}
|
||||
|
@ -32834,7 +32848,6 @@ packages:
|
|||
pretty-format: 29.6.2
|
||||
slash: 3.0.0
|
||||
stack-utils: 2.0.5
|
||||
dev: true
|
||||
|
||||
/jest-mock-extended@1.0.18(jest@27.5.1)(typescript@5.1.6):
|
||||
resolution: {integrity: sha512-qf1n7lIa2dTxxPIBr+FlXrbj3hnV1sG9DPZsrr2H/8W+Jw0wt6OmeOQsPcjRuW8EXIECC9pDXsSIfEdn+HP7JQ==}
|
||||
|
@ -32883,6 +32896,7 @@ packages:
|
|||
'@jest/types': 29.5.0
|
||||
'@types/node': 16.18.21
|
||||
jest-util: 29.5.0
|
||||
dev: true
|
||||
|
||||
/jest-mock@29.6.2:
|
||||
resolution: {integrity: sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==}
|
||||
|
@ -32891,7 +32905,6 @@ packages:
|
|||
'@jest/types': 29.6.1
|
||||
'@types/node': 16.18.21
|
||||
jest-util: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-pnp-resolver@1.2.2(jest-resolve@24.9.0):
|
||||
resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
|
||||
|
@ -32950,6 +32963,7 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
jest-resolve: 29.5.0
|
||||
dev: true
|
||||
|
||||
/jest-pnp-resolver@1.2.2(jest-resolve@29.6.2):
|
||||
resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
|
||||
|
@ -32961,7 +32975,6 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
jest-resolve: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-puppeteer@4.4.0(puppeteer-core@3.0.0):
|
||||
resolution: {integrity: sha512-ZaiCTlPZ07B9HW0erAWNX6cyzBqbXMM7d2ugai4epBDKpKvRDpItlRQC6XjERoJELKZsPziFGS0OhhUvTvQAXA==}
|
||||
|
@ -33069,7 +33082,6 @@ packages:
|
|||
jest-snapshot: 29.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-resolve@24.9.0:
|
||||
resolution: {integrity: sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==}
|
||||
|
@ -33139,6 +33151,7 @@ packages:
|
|||
resolve: 1.22.1
|
||||
resolve.exports: 2.0.2
|
||||
slash: 3.0.0
|
||||
dev: true
|
||||
|
||||
/jest-resolve@29.6.2:
|
||||
resolution: {integrity: sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw==}
|
||||
|
@ -33153,9 +33166,8 @@ packages:
|
|||
resolve: 1.22.1
|
||||
resolve.exports: 2.0.2
|
||||
slash: 3.0.0
|
||||
dev: true
|
||||
|
||||
/jest-runner-groups@2.2.0(jest-docblock@29.4.3)(jest-runner@29.5.0):
|
||||
/jest-runner-groups@2.2.0(jest-docblock@29.4.3)(jest-runner@29.6.2):
|
||||
resolution: {integrity: sha512-Sp/B9ZX0CDAKa9dIkgH0sGyl2eDuScV4SVvOxqhBMxqWpsNAkmol/C58aTFmPWZj+C0ZTW1r1BSu66MTCN+voA==}
|
||||
engines: {node: '>= 10.14.2'}
|
||||
peerDependencies:
|
||||
|
@ -33163,7 +33175,7 @@ packages:
|
|||
jest-runner: '>= 24'
|
||||
dependencies:
|
||||
jest-docblock: 29.4.3
|
||||
jest-runner: 29.5.0
|
||||
jest-runner: 29.6.2
|
||||
dev: false
|
||||
|
||||
/jest-runner@24.9.0:
|
||||
|
@ -33315,6 +33327,7 @@ packages:
|
|||
source-map-support: 0.5.13
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-runner@29.6.2:
|
||||
resolution: {integrity: sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w==}
|
||||
|
@ -33343,7 +33356,6 @@ packages:
|
|||
source-map-support: 0.5.13
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-runtime@24.9.0:
|
||||
resolution: {integrity: sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==}
|
||||
|
@ -33514,6 +33526,7 @@ packages:
|
|||
strip-bom: 4.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-runtime@29.6.2:
|
||||
resolution: {integrity: sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg==}
|
||||
|
@ -33543,7 +33556,6 @@ packages:
|
|||
strip-bom: 4.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-serializer@24.9.0:
|
||||
resolution: {integrity: sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==}
|
||||
|
@ -33695,6 +33707,7 @@ packages:
|
|||
semver: 7.5.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-snapshot@29.6.2:
|
||||
resolution: {integrity: sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==}
|
||||
|
@ -33722,7 +33735,6 @@ packages:
|
|||
semver: 7.5.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/jest-util@24.9.0:
|
||||
resolution: {integrity: sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==}
|
||||
|
@ -33787,6 +33799,7 @@ packages:
|
|||
ci-info: 3.2.0
|
||||
graceful-fs: 4.2.9
|
||||
picomatch: 2.3.1
|
||||
dev: true
|
||||
|
||||
/jest-util@29.6.2:
|
||||
resolution: {integrity: sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==}
|
||||
|
@ -33798,7 +33811,6 @@ packages:
|
|||
ci-info: 3.2.0
|
||||
graceful-fs: 4.2.9
|
||||
picomatch: 2.3.1
|
||||
dev: true
|
||||
|
||||
/jest-validate@24.9.0:
|
||||
resolution: {integrity: sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==}
|
||||
|
@ -33856,6 +33868,7 @@ packages:
|
|||
jest-get-type: 29.4.3
|
||||
leven: 3.1.0
|
||||
pretty-format: 29.5.0
|
||||
dev: true
|
||||
|
||||
/jest-validate@29.6.2:
|
||||
resolution: {integrity: sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==}
|
||||
|
@ -33867,7 +33880,6 @@ packages:
|
|||
jest-get-type: 29.4.3
|
||||
leven: 3.1.0
|
||||
pretty-format: 29.6.2
|
||||
dev: true
|
||||
|
||||
/jest-watcher@24.9.0:
|
||||
resolution: {integrity: sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==}
|
||||
|
@ -33933,6 +33945,7 @@ packages:
|
|||
emittery: 0.13.1
|
||||
jest-util: 29.5.0
|
||||
string-length: 4.0.2
|
||||
dev: true
|
||||
|
||||
/jest-watcher@29.6.2:
|
||||
resolution: {integrity: sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==}
|
||||
|
@ -33946,7 +33959,6 @@ packages:
|
|||
emittery: 0.13.1
|
||||
jest-util: 29.6.2
|
||||
string-length: 4.0.2
|
||||
dev: true
|
||||
|
||||
/jest-worker@24.9.0:
|
||||
resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==}
|
||||
|
@ -33988,6 +34000,7 @@ packages:
|
|||
jest-util: 29.5.0
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 8.1.1
|
||||
dev: true
|
||||
|
||||
/jest-worker@29.6.2:
|
||||
resolution: {integrity: sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==}
|
||||
|
@ -33997,7 +34010,6 @@ packages:
|
|||
jest-util: 29.6.2
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 8.1.1
|
||||
dev: true
|
||||
|
||||
/jest@24.9.0:
|
||||
resolution: {integrity: sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==}
|
||||
|
@ -34102,7 +34114,6 @@ packages:
|
|||
- babel-plugin-macros
|
||||
- supports-color
|
||||
- ts-node
|
||||
dev: true
|
||||
|
||||
/jmespath@0.16.0:
|
||||
resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==}
|
||||
|
@ -39142,6 +39153,7 @@ packages:
|
|||
'@jest/schemas': 29.4.3
|
||||
ansi-styles: 5.2.0
|
||||
react-is: 18.2.0
|
||||
dev: true
|
||||
|
||||
/pretty-format@29.6.2:
|
||||
resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==}
|
||||
|
@ -39150,7 +39162,6 @@ packages:
|
|||
'@jest/schemas': 29.6.0
|
||||
ansi-styles: 5.2.0
|
||||
react-is: 18.2.0
|
||||
dev: true
|
||||
|
||||
/pretty-hrtime@1.0.3:
|
||||
resolution: {integrity: sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=}
|
||||
|
@ -39487,7 +39498,6 @@ packages:
|
|||
|
||||
/pure-rand@6.0.1:
|
||||
resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==}
|
||||
dev: true
|
||||
|
||||
/q@1.5.1:
|
||||
resolution: {integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=}
|
||||
|
@ -40189,8 +40199,8 @@ packages:
|
|||
react-dom: 17.0.2(react@17.0.2)
|
||||
dev: false
|
||||
|
||||
/react-query@3.39.1(react-dom@17.0.2)(react@17.0.2):
|
||||
resolution: {integrity: sha512-qYKT1bavdDiQZbngWZyPotlBVzcBjDYEJg5RQLBa++5Ix5jjfbEYJmHSZRZD+USVHUSvl/ey9Hu+QfF1QAK80A==}
|
||||
/react-query@3.39.3(react-dom@17.0.2)(react@17.0.2):
|
||||
resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
react-dom: '*'
|
||||
|
@ -45097,7 +45107,6 @@ packages:
|
|||
'@jridgewell/trace-mapping': 0.3.17
|
||||
'@types/istanbul-lib-coverage': 2.0.3
|
||||
convert-source-map: 1.8.0
|
||||
dev: true
|
||||
|
||||
/v8flags@3.1.3:
|
||||
resolution: {integrity: sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==}
|
||||
|
@ -46622,7 +46631,6 @@ packages:
|
|||
/yargs-parser@21.1.1:
|
||||
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
|
||||
engines: {node: '>=12'}
|
||||
dev: true
|
||||
|
||||
/yargs-unparser@1.6.0:
|
||||
resolution: {integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==}
|
||||
|
@ -46701,7 +46709,6 @@ packages:
|
|||
string-width: 4.2.3
|
||||
y18n: 5.0.8
|
||||
yargs-parser: 21.1.1
|
||||
dev: true
|
||||
|
||||
/yargs@4.8.1:
|
||||
resolution: {integrity: sha1-wMQpJMpKqmsObaFznfshZDn53cA=}
|
||||
|
|
Loading…
Reference in New Issue