diff --git a/CITATION.cff b/CITATION.cff index 4f4d57f..548daf4 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -6,7 +6,7 @@ authors: given-names: Justin - family-names: Tresova given-names: Armand -version: 1.11.1 +version: 1.11.2 doi: 10.5281/zenodo.1171250 date-released: 2017-05-08 url: "https://github.com/XjSv/cooked" \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md index f539ffa..0e088ba 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -5,8 +5,8 @@ Versions that are currently being supported with security updates. | Version | Supported | | ----------- | ------------------ | -| 1.11.1 | :white_check_mark: | -| <= 1.11.0 | :x: | +| 1.11.2 | :white_check_mark: | +| <= 1.11.1 | :x: | ## Reporting a Vulnerability diff --git a/composer.json b/composer.json index 0753c64..d2470cc 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "recipe" ], "homepage": "https://wordpress.org/plugins/cooked/", - "version": "1.11.1", + "version": "1.11.2", "type": "wordpress-plugin", "license": "GPL-3.0-or-later", "prefer-stable": true, diff --git a/composer.lock b/composer.lock index a316daa..6ec8aea 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cbebc058f340c9e8ea81eac4e5b2b8ae", + "content-hash": "3acf7edb747ae766b765a212b4a1476c", "packages": [ { "name": "nxp/math-executor", diff --git a/cooked.php b/cooked.php index 342e006..0238746 100644 --- a/cooked.php +++ b/cooked.php @@ -6,7 +6,7 @@ Description: A recipe plugin for WordPress. Author: Gora Tech Author URI: https://goratech.dev -Version: 1.11.1 +Version: 1.11.2 Text Domain: cooked Domain Path: languages License: GPL2 @@ -30,7 +30,7 @@ require_once __DIR__ . '/vendor/autoload.php'; -define( 'COOKED_VERSION', '1.11.1' ); +define( 'COOKED_VERSION', '1.11.2' ); define( 'COOKED_DEV', false ); if ( ! class_exists( 'Cooked_Plugin' ) ) : @@ -96,6 +96,14 @@ final class Cooked_Plugin { */ public $migration; + /** + * Cooked Updates Object. + * + * @var object|Cooked_Updates + * @since 1.0.0 + */ + public $updates; + /** * Cooked Post Types Object. * @@ -243,6 +251,7 @@ public static function instance() { self::$instance->admin_settings = new Cooked_Settings(); self::$instance->migration = new Cooked_Migration(); + self::$instance->updates = new Cooked_Updates(); self::$instance->post_types = new Cooked_Post_Types(); self::$instance->recipe_meta = new Cooked_Recipe_Meta(); self::$instance->recipe_meta = new Cooked_Measurements(); @@ -259,6 +268,8 @@ public static function instance() { self::$instance->module_setup(); add_action( 'init', [self::$instance, 'initialize_plugin_support'], 10 ); + + do_action('cooked_loaded'); } return self::$instance; @@ -446,6 +457,7 @@ private function includes() { require_once COOKED_DIR . 'includes/class.cooked-admin-menus.php'; require_once COOKED_DIR . 'includes/class.cooked-settings.php'; require_once COOKED_DIR . 'includes/class.cooked-migration.php'; + require_once COOKED_DIR . 'includes/class.cooked-updates.php'; require_once COOKED_DIR . 'includes/class.cooked-ajax.php'; require_once COOKED_DIR . 'includes/class.cooked-functions.php'; require_once COOKED_DIR . 'includes/class.cooked-widgets.php'; diff --git a/includes/class.cooked-ajax.php b/includes/class.cooked-ajax.php index feea9c9..65e2aa1 100644 --- a/includes/class.cooked-ajax.php +++ b/includes/class.cooked-ajax.php @@ -94,14 +94,15 @@ public function get_import_ids() { ]; } elseif ($import_type === 'wp_recipe_maker') { $args = [ - 'post_type' => 'recipe', + 'post_type' => 'wprm_recipe', 'posts_per_page' => -1, 'post_status' => 'any', 'fields' => 'ids', 'meta_query' => [ [ - 'key' => 'recipe_maker_metadata', - 'compare' => 'EXISTS', + 'key' => 'wprm_type', + 'value' => 'food', + 'compare' => '=', ], ], ]; @@ -204,6 +205,7 @@ public function import_recipes() { } require_once COOKED_DIR . 'includes/class.cooked-delicious-recipes.php'; + require_once COOKED_DIR . 'includes/class.cooked-recipe-maker.php'; $bulk_amount = 10; @@ -233,9 +235,9 @@ public function import_recipes() { foreach ( $recipe_ids as $rid ) { if ($import_type === 'delicious_recipes') { Cooked_Delicious_Recipes::import_recipe( $rid ); - } /* elseif ($import_type === 'wp_recipe_maker') { + } elseif ($import_type === 'wp_recipe_maker') { Cooked_Recipe_Maker_Recipes::import_recipe( $rid ); - } */ + } } if ( !empty( $leftover_recipe_ids ) ) { @@ -244,9 +246,9 @@ public function import_recipes() { } else { if ($import_type === 'delicious_recipes') { update_option( 'cooked_delicious_recipes_imported', true ); - } /* elseif ($import_type === 'wp_recipe_maker') { + } elseif ($import_type === 'wp_recipe_maker') { update_option( 'cooked_wp_recipe_maker_imported', true ); - } */ + } } } diff --git a/includes/class.cooked-delicious-recipes.php b/includes/class.cooked-delicious-recipes.php index 420cfb7..b3a722d 100644 --- a/includes/class.cooked-delicious-recipes.php +++ b/includes/class.cooked-delicious-recipes.php @@ -99,7 +99,7 @@ public static function import_recipe($id) { if (is_wp_error($new_recipe_id)) { return [ 'status' => false, - 'message' => __('Error importing recipe.', 'cooked'), + 'message' => __('Error importing WP Delicious recipe.', 'cooked'), ]; } diff --git a/includes/class.cooked-functions.php b/includes/class.cooked-functions.php index 5f98f28..e6d86a3 100644 --- a/includes/class.cooked-functions.php +++ b/includes/class.cooked-functions.php @@ -12,6 +12,13 @@ class Cooked_Functions { + /** + * Guest message ID + * + * @var string + */ + private static $guest_message_id = false; + public static function sanitize_text_field( $text ) { $text = htmlentities( stripslashes( $text ) ); $text = sanitize_text_field( $text ); @@ -223,19 +230,25 @@ function update_print_options( printOpt ) { } ' . number_format( $total ) . '', 'WP Recipe Maker' ); + $html_desc .= '
'; + $html_desc .= __( 'Before you begin, please make sure you backup your database in case something goes wrong.', 'cooked' ); + $html_desc .= '
'; + $html_desc .= __( 'Click the button below to import these recipes. Here is what will happen to your recipes:', 'cooked' ); + $html_desc .= ''; + + if ($total > 2000) { + $html_desc .= '

' . __( 'Wow, you have a lot of recipes!', 'cooked' ) . '
' . __( 'It is definitely recommended that you get yourself a cup of coffee or tea after clicking this button.', 'cooked' ) . '

'; + } else { + $html_desc .= '

' . __( 'Note:', 'cooked' ) . ' ' . __( 'The more recipes you have, the longer this will take.', 'cooked' ) . '

'; + } + + if ($total > 0) { + $import_tabs['wp_recipe_maker_import'] = [ + 'name' => __('WP Recipe Maker - Import', 'cooked'), + 'icon' => 'migrate', + 'fields' => [ + 'cooked_import_button' => [ + 'title' => 'WP Recipe Maker    Cooked', + 'desc' => $html_desc, + 'type' => 'import_button', + 'total' => $total, + 'import_type' => $Cooked_Recipe_Maker_Recipes->import_type, + ] + ] + ]; + } + } else { + $import_tabs['no_wp_recipe_maker_recipes'] = [ + 'name' => __('WP Recipe Maker - Import', 'cooked'), + 'icon' => 'migrate', + 'fields' => [ + 'cooked_no_wp_recipe_maker_recipes' => [ + 'title' => 'WP Recipe Maker', + 'desc' => '', + 'type' => 'message', + 'message' => 'There are no recipes to import from WP Recipe Maker.', + ] + ] + ]; + } + $import_tabs['more_imports_coming_soon'] = [ 'name' => __('More Imports are Coming Soon...', 'cooked'), 'icon' => 'migrate', 'fields' => [ - 'cooked_no_delicious_recipes' => [ + 'cooked_more_imports_coming_soon' => [ 'title' => 'More Imports are Coming Soon...', 'desc' => '', 'type' => 'message', diff --git a/includes/class.cooked-recipe-maker.php b/includes/class.cooked-recipe-maker.php new file mode 100644 index 0000000..226b318 --- /dev/null +++ b/includes/class.cooked-recipe-maker.php @@ -0,0 +1,318 @@ + 'wprm_recipe', + 'posts_per_page' => -1, + 'post_status' => 'any', + 'fields' => 'ids', + 'meta_query' => [ + [ + 'key' => 'wprm_type', + 'value' => 'food', + 'compare' => '=', + ], + ], + ]; + + $_recipes = new WP_Query( $args ); + + if (!empty($_recipes->posts)) { + foreach ($_recipes->posts as $rid) { + $wp_recipe_maker_recipes[] = $rid; + } + } + + return $wp_recipe_maker_recipes; + } + + /** + * Import Delicious Recipes. + * + * @since 1.11.2 + * @access public + */ + public static function import_recipe($id) { + global $_cooked_settings; + + $post = get_post($id); + $post_meta = get_post_custom($id); + $wprm_notes = maybe_unserialize($post_meta['wprm_notes'][0]); + + // Create new cp_recipe post. + $new_cp_recipe = []; + $new_cp_recipe['post_type'] = 'cp_recipe'; + $new_cp_recipe['post_status'] = 'draft'; + $new_cp_recipe['post_title'] = isset( $post->post_title ) ? sanitize_text_field( $post->post_title ) : ''; + $new_cp_recipe['post_content'] = isset( $post->post_content ) ? sanitize_text_field( $post->post_content ) : ''; + $new_cp_recipe['post_author'] = isset( $post->post_author ) ? absint( $post->post_author ) : ''; + $new_cp_recipe['post_excerpt'] = isset( $post->post_excerpt ) ? sanitize_text_field( $post->post_excerpt ) : ''; + $new_cp_recipe['ping_status'] = isset( $post->ping_status ) ? sanitize_text_field( $post->ping_status ) : ''; + $new_cp_recipe['commnets_status'] = isset( $post->comment_status ) ? sanitize_text_field( $post->comment_status ) : ''; + $new_cp_recipe['comment_count'] = isset( $post->comment_count ) ? absint( $post->comment_count ) : ''; + + $new_recipe_id = wp_insert_post($new_cp_recipe); + if (is_wp_error($new_recipe_id)) { + return [ + 'status' => false, + 'message' => __('Error importing WP Recipe Maker recipe.', 'cooked'), + ]; + } + + if (isset($_cooked_settings['default_content'])) { + $default_content = stripslashes($_cooked_settings['default_content']); + } else { + $default_content = Cooked_Recipes::default_content(); + } + + // Insert new post meta data. + $new_cp_recipe_meta = []; + $new_cp_recipe_meta['cooked_version'] = COOKED_VERSION; + $new_cp_recipe_meta['content'] = $default_content; + $new_cp_recipe_meta['excerpt'] = isset( $post->post_content ) ? sanitize_text_field( $post->post_content ) : ''; + $new_cp_recipe_meta['seo_description'] = isset( $post->post_content ) ? sanitize_text_field( $post->post_content ) : ''; + $new_cp_recipe_meta['notes'] = !empty( $wprm_notes ) ? wp_kses_post( $wprm_notes ) : ''; + + $new_cp_recipe_meta['difficulty_level'] = 1; + $new_cp_recipe_meta['prep_time'] = isset( $post_meta['wprm_prep_time'][0] ) ? (int)$post_meta['wprm_prep_time'][0] : 0; + $new_cp_recipe_meta['cook_time'] = isset( $post_meta['wprm_cook_time'][0] ) ? (int)$post_meta['wprm_cook_time'][0] : 0; + $new_cp_recipe_meta['total_time'] = $new_cp_recipe_meta['prep_time'] + $new_cp_recipe_meta['cook_time']; + + // Recipe Ingredients. + $recipeIngredients = isset( $post_meta['wprm_ingredients'][0] ) ? maybe_unserialize($post_meta['wprm_ingredients'][0]) : []; + $new_cp_recipe_meta['ingredients'] = []; + + $measurements = Cooked_Measurements::get(); + $measurement_keys = array_keys($measurements); + + if (!empty($recipeIngredients)) { + foreach ($recipeIngredients as $section) { + // Check if this is a section with a name + if (isset($section['name']) && !empty($section['name'])) { + $new_cp_recipe_meta['ingredients'][] = [ + 'section_heading_name' => $section['name'], + ]; + } + + // Process ingredients in this section + if (isset($section['ingredients']) && !empty($section['ingredients'])) { + foreach ($section['ingredients'] as $ingredient) { + $new_cp_recipe_meta['ingredients'][] = [ + 'amount' => (!empty($ingredient['amount']) ? $ingredient['amount'] : ''), + 'measurement' => (!empty($ingredient['unit']) && in_array($ingredient['unit'], $measurement_keys) ? $ingredient['unit'] : ''), + 'name' => (!empty($ingredient['name']) ? $ingredient['name'] : ''), + 'url' => '', + 'description' => (!empty($ingredient['notes']) ? $ingredient['notes'] : ''), + ]; + } + } + } + } + + // Recipe Instructions. + $recipeInstructions = isset( $post_meta['wprm_instructions'][0] ) ? maybe_unserialize($post_meta['wprm_instructions'][0]) : []; + $new_cp_recipe_meta['directions'] = []; + + if (!empty($recipeInstructions)) { + foreach ($recipeInstructions as $section) { + // Check if this is a section with a name + if (isset($section['name']) && !empty($section['name'])) { + $new_cp_recipe_meta['directions'][] = [ + 'section_heading_name' => $section['name'], + ]; + } + + // Process instructions in this section + if (isset($section['instructions']) && !empty($section['instructions'])) { + foreach ($section['instructions'] as $instruction) { + $new_cp_recipe_meta['directions'][] = [ + 'image' => isset($instruction['image']) && $instruction['image'] !== 0 ? $instruction['image'] : '', + 'content' => isset($instruction['text']) ? $instruction['text'] : '', + ]; + } + } + } + } + + // Gallery. + $videoGalleryVids = isset( $post_meta['wprm_video_embed'] ) ? $post_meta['wprm_video_embed'][0] : ''; + $new_cp_recipe_meta['gallery'] = [ + 'type' => 'cooked', + 'video_url' => $videoGalleryVids, + 'items' => [], + ]; + + // Nutrition Data. + $new_cp_recipe_meta['nutrition']['serving_size'] = isset( $post_meta['wprm_nutrition_serving_size'][0] ) ? absint( $post_meta['wprm_nutrition_serving_size'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['servings'] = isset( $post_meta['wprm_servings'][0] ) ? absint( $post_meta['wprm_servings'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['calories'] = isset( $post_meta['wprm_nutrition_calories'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_calories'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['calories_fat'] = isset( $post_meta['wprm_nutrition_calories_from_fat'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_calories_from_fat'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['fat'] = isset( $post_meta['wprm_nutrition_fat'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_fat'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['sat_fat'] = isset( $post_meta['wprm_nutrition_saturated_fat'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_saturated_fat'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['trans_fat'] = isset( $post_meta['wprm_nutrition_trans_fat'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_trans_fat'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['cholesterol'] = isset( $post_meta['wprm_nutrition_cholesterol'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_cholesterol'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['sodium'] = isset( $post_meta['wprm_nutrition_sodium'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_sodium'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['potassium'] = isset( $post_meta['wprm_nutrition_potassium'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_potassium'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['carbs'] = isset( $post_meta['wprm_nutrition_carbohydrates'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_carbohydrates'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['fiber'] = isset( $post_meta['wprm_nutrition_fiber'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_fiber'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['sugars'] = isset( $post_meta['wprm_nutrition_sugar'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_sugar'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['protein'] = isset( $post_meta['wprm_nutrition_protein'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_protein'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['vitamin_a'] = isset( $post_meta['wprm_nutrition_vitamin_a'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_vitamin_a'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['vitamin_c'] = isset( $post_meta['wprm_nutrition_vitamin_c'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_vitamin_c'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['calcium'] = isset( $post_meta['wprm_nutrition_calcium'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_calcium'][0] ) : ''; + $new_cp_recipe_meta['nutrition']['iron'] = isset( $post_meta['wprm_nutrition_iron'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_iron'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['vitamin_d'] = isset( $post_meta['wprm_nutrition_vitamin_d'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_vitamin_d'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['vitamin_e'] = isset( $post_meta['wprm_nutrition_vitamin_e'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_vitamin_e'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['vitamin_k'] = isset( $post_meta['wprm_nutrition_vitamin_k'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_vitamin_k'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['thiamin'] = isset( $post_meta['wprm_nutrition_thiamin'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_thiamin'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['riboflavin'] = isset( $post_meta['wprm_nutrition_riboflavin'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_riboflavin'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['niacin'] = isset( $post_meta['wprm_nutrition_niacin'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_niacin'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['vitamin_b6'] = isset( $post_meta['wprm_nutrition_vitamin_b6'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_vitamin_b6'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['folate'] = isset( $post_meta['wprm_nutrition_folate'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_folate'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['vitamin_b12'] = isset( $post_meta['wprm_nutrition_vitamin_b12'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_vitamin_b12'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['biotin'] = isset( $post_meta['wprm_nutrition_biotin'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_biotin'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['pantothenic_acid'] = isset( $post_meta['wprm_nutrition_pantothenic_acid'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_pantothenic_acid'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['phosphorus'] = isset( $post_meta['wprm_nutrition_phosphorus'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_phosphorus'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['iodine'] = isset( $post_meta['wprm_nutrition_iodine'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_iodine'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['magnesium'] = isset( $post_meta['wprm_nutrition_magnesium'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_magnesium'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['zinc'] = isset( $post_meta['wprm_nutrition_zinc'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_zinc'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['selenium'] = isset( $post_meta['wprm_nutrition_selenium'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_selenium'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['copper'] = isset( $post_meta['wprm_nutrition_copper'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_copper'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['manganese'] = isset( $post_meta['wprm_nutrition_manganese'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_manganese'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['chromium'] = isset( $post_meta['wprm_nutrition_chromium'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_chromium'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['molybdenum'] = isset( $post_meta['wprm_nutrition_molybdenum'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_molybdenum'][0] ) : ''; + // $new_cp_recipe_meta['nutrition']['chloride'] = isset( $post_meta['wprm_nutrition_chloride'][0] ) ? sanitize_text_field( $post_meta['wprm_nutrition_chloride'][0] ) : ''; + + // Insert new post meta data. + update_post_meta($new_recipe_id, '_recipe_settings', $new_cp_recipe_meta); + + // Updte the _thumbnail_id meta. + $thumbnail_id = get_post_meta($id, '_thumbnail_id', true); + update_post_meta($new_recipe_id, '_thumbnail_id', $thumbnail_id); + + // Copy comments from old recipe to new recipe. + $ratings = []; + $comments = get_comments(['post_id' => $id]); + if (!empty($comments)) { + foreach ($comments as $comment) { + $commentdata = [ + 'comment_post_ID' => $new_recipe_id, + 'comment_author' => $comment->comment_author, + 'comment_author_email' => $comment->comment_author_email, + 'comment_author_url' => $comment->comment_author_url, + 'comment_content' => $comment->comment_content, + 'comment_type' => $comment->comment_type, + 'comment_parent' => $comment->comment_parent, + 'user_id' => $comment->user_id, + 'comment_author_IP' => $comment->comment_author_IP, + 'comment_agent' => $comment->comment_agent, + 'comment_date' => $comment->comment_date, + 'comment_approved' => $comment->comment_approved, + ]; + wp_insert_comment($commentdata); + + // Rating are stored in the wp_commentmeta table with the key: 'rating'. + $rating = get_comment_meta($comment->comment_ID, 'wprm-comment-rating', true); + if (!empty($rating)) { + $ratings[] = $rating; + } + } + } + + // Insert recipe ratings meta data. + $rating_sum = array_sum($ratings); + $rating_average = 0; + if ($rating_sum > 0) { + $rating_average = number_format($rating_sum / count($ratings), 1 ); + } + update_post_meta($new_recipe_id, '_recipe_rating', $rating_average); + + // Insert recipe taxonomies. Create the terms if they don't exist. + $recipe_taxonomies_mapping = [ + 'wprm_course' => 'cp_recipe_category', + 'wprm_cuisine' => 'cp_recipe_cuisine', + 'wprm_keyword' => 'cp_recipe_tags', + ]; + + $wp_recipe_maker_taxonomies = get_object_taxonomies('wprm_recipe'); + if (!empty($wp_recipe_maker_taxonomies)) { + foreach ($wp_recipe_maker_taxonomies as $taxonomy) { + if (isset($recipe_taxonomies_mapping[$taxonomy])) { + $terms = wp_get_object_terms($id, $taxonomy, ['fields' => 'all']); + + if (!empty($terms)) { + $new_terms = []; + + foreach ($terms as $term_id) { + $term = get_term($term_id); + $term_exists = term_exists($term->name, $recipe_taxonomies_mapping[$taxonomy]); + + if (!$term_exists) { + $new_term = wp_insert_term($term->name, $recipe_taxonomies_mapping[$taxonomy]); + if (is_wp_error($new_term)) { + continue; + } + + $new_term_id = (int)$new_term['term_id']; + } else { + $new_term_id = (int)$term_exists['term_id']; + } + + $new_terms[] = $new_term_id; + } + + wp_set_object_terms($new_recipe_id, $new_terms, $recipe_taxonomies_mapping[$taxonomy], true); + + // Update the term count. + wp_update_term_count($new_terms, $recipe_taxonomies_mapping[$taxonomy]); + } + } + } + } + } +} diff --git a/includes/class.cooked-recipe-meta.php b/includes/class.cooked-recipe-meta.php index b4e6053..418f056 100644 --- a/includes/class.cooked-recipe-meta.php +++ b/includes/class.cooked-recipe-meta.php @@ -44,7 +44,11 @@ public static function meta_cleanup( $recipe_settings ) { $_recipe_settings[$key] = Cooked_Functions::sanitize_text_field( $val ); } } else { - $_recipe_settings[$key] = Cooked_Functions::sanitize_text_field( $val ); + if ($key === "post_title") { + $_recipe_settings[$key] = wp_kses_post( $val ); + } else { + $_recipe_settings[$key] = Cooked_Functions::sanitize_text_field( $val ); + } } } else { foreach ($val as $subkey => $subval) { @@ -369,7 +373,7 @@ function cooked_render_recipe_fields( $post_id ) { true, - 'media_buttons' => false, + 'media_buttons' => true, 'wpautop' => false, 'editor_height' => 100, 'textarea_name' => '_recipe_settings[excerpt]', @@ -429,7 +433,7 @@ function cooked_render_recipe_fields( $post_id ) { false, - 'media_buttons' => false, + 'media_buttons' => true, 'wpautop' => false, 'editor_height' => 100, 'textarea_name' => '_recipe_settings[notes]', diff --git a/includes/class.cooked-recipes.php b/includes/class.cooked-recipes.php index 51c5f0c..9e9f8e6 100644 --- a/includes/class.cooked-recipes.php +++ b/includes/class.cooked-recipes.php @@ -89,7 +89,7 @@ public static function get( $args = false, $single = false, $ids_only = false, $ $recipes_pre_search = new WP_Query($pre_search_args); if ( $recipes_pre_search->have_posts() ): $rposts = $recipes_pre_search->posts; - $recipe_ids = ( !empty($recipe_ids) ? array_merge( $recipe_ids, $rposts ) : $rposts ); + $recipe_ids = !empty($recipe_ids) ? array_merge( $recipe_ids, $rposts ) : $rposts; endif; $recipe_ids = array_unique( $recipe_ids ); @@ -947,7 +947,10 @@ public static function recipe_search_box( $options = false ) { if ( isset($recipe_args['tax_query']) ): foreach ( $recipe_args['tax_query'] as $query ): - if ( isset($query['taxonomy']) && isset($query['terms']) ): + // Only process inclusion queries (default operator or explicit 'IN') + // Skip exclusion queries ('NOT IN') and other complex operators + $operator = isset($query['operator']) ? $query['operator'] : 'IN'; + if ( $operator === 'IN' && isset($query['taxonomy']) && isset($query['terms']) ): $filters_set[$query['taxonomy']] = implode( ',', $query['terms'] ); endif; endforeach; @@ -955,16 +958,18 @@ public static function recipe_search_box( $options = false ) { if ( isset($filters_set) ): foreach ( $filters_set as $taxonomy => $filter ): $this_tax = get_term_by( 'slug', $filter, $taxonomy ); - $this_tax = ( $this_tax ? $this_tax : get_term_by( 'id', $filter, $taxonomy ) ); - $filters_set[$taxonomy] = $this_tax->term_id; - $active_taxonomy = ( !isset($active_taxonomy) ? $this_tax->name : $active_taxonomy ); + $this_tax = $this_tax ? $this_tax : get_term_by( 'id', $filter, $taxonomy ); + if ( $this_tax && !is_wp_error($this_tax) ): + $filters_set[$taxonomy] = $this_tax->term_id; + $active_taxonomy = !isset($active_taxonomy) ? $this_tax->name : $active_taxonomy; + endif; endforeach; endif; endif; $total_taxonomies = 0; - $inline_browse = ( isset($options['inline_browse']) && $options['inline_browse'] ? true : false ); + $inline_browse = isset($options['inline_browse']) && $options['inline_browse'] ? true : false; ob_start(); if ( !empty($_cooked_settings['recipe_taxonomies']) ): diff --git a/includes/class.cooked-settings.php b/includes/class.cooked-settings.php index f7db54b..6e97321 100644 --- a/includes/class.cooked-settings.php +++ b/includes/class.cooked-settings.php @@ -24,9 +24,7 @@ public function __construct() { add_filter( 'init', [&$this, 'init'] ); add_action( 'save_post', [&$this, 'browse_page_saved'], 10, 1 ); add_action( 'admin_notices', [ &$this, 'cooked_settings_saved_admin_notice' ] ); - - // Add action to check version and update settings at the end of page load - add_action( 'shutdown', [&$this, 'check_version_and_update'] ); + add_action( 'admin_notices', [ &$this, 'browse_page_missing_notice' ] ); } public function browse_page_saved( $post_id ) { @@ -90,9 +88,30 @@ function cooked_settings_saved_admin_notice() { } } + function browse_page_missing_notice() { + // Only show on admin pages, not on the Cooked settings page itself + if ( isset($_GET['page']) && $_GET['page'] === 'cooked_settings' ) { + return; + } + + // Get Cooked settings + $_cooked_settings = self::get(); + + // Check if browse page is set + if ( empty($_cooked_settings['browse_page']) || !$_cooked_settings['browse_page'] ) { + $class = 'notice notice-warning is-dismissible'; + $message = sprintf( + '' . __( 'Cooked Plugin Setup', 'cooked' ) . ' ' . + __( 'To display your recipes properly, please set up your %s.', 'cooked' ), + '' . __( 'Browse/Search Recipes Page', 'cooked' ) . '' + ); + printf( '

%2$s

', esc_attr( $class ), $message ); + } + } + public static function reset() { global $_cooked_settings; - $_cooked_settings = self::get(); + $_cooked_settings = Cooked_Settings::get(); } public static function get() { @@ -120,63 +139,6 @@ public static function get() { return apply_filters( 'cooked_get_settings', $_cooked_settings ); } - public static function check_version_and_update() { - $cooked_settings_saved = get_option( 'cooked_settings_saved', false ); - $_cooked_settings_version = get_option( 'cooked_settings_version', '1.0.0' ); - $_cooked_pro_settings_version = get_option( 'cooked_pro_settings_version', '1.0.0' ); - - // Check both versions - $cooked_version_compare = version_compare( $_cooked_settings_version, COOKED_VERSION ); - $cooked_pro_version_compare = defined('COOKED_PRO_VERSION') ? version_compare( $_cooked_pro_settings_version, COOKED_PRO_VERSION ) : 0; - - // Update if either version has changed or settings haven't been saved before - if ( !$cooked_settings_saved || $cooked_version_compare < 0 || $cooked_pro_version_compare < 0 ) { - global $_cooked_settings; - - if ( empty($_cooked_settings) ) { - $_cooked_settings = self::get(); - } - - update_option( 'cooked_settings', $_cooked_settings ); - - // Update both version numbers - update_option( 'cooked_settings_version', COOKED_VERSION ); - if ( defined('COOKED_PRO_VERSION') ) { - update_option( 'cooked_pro_settings_version', COOKED_PRO_VERSION ); - } - - if ( self::needs_rewrite_flush( $_cooked_settings_version ) ) { - flush_rewrite_rules(); - } - } - } - - private static function needs_rewrite_flush( $old_version ) { - // List versions that require a rewrite flush - $versions_requiring_flush = [ - '1.9.0', // New rewrite rules for Browse page introduced. - '1.9.1', // Hotfix for the permalink structure. - '1.9.2', // Hotfix for the permalink structure. - '1.9.4', // Hotfix for the permalink structure. - '1.9.5', // Hotfix for the permalink structure (sort & search). - ]; - - // If old version is newer than our latest flush requirement, no flush needed - if (version_compare($old_version, end($versions_requiring_flush), '>=')) { - return false; - } - - // Find the next version that requires a flush after the old version - foreach ($versions_requiring_flush as $version) { - if (version_compare($old_version, $version, '<') && - version_compare(COOKED_VERSION, $version, '>=')) { - return true; - } - } - - return false; - } - public static function tabs_fields() { $pages_array = self::pages_array( __('Choose a page...','cooked'), __('No pages','cooked') ); $categories_array = self::terms_array( 'cp_recipe_category', __('No default', 'cooked'), __('No categories', 'cooked') ); @@ -205,7 +167,7 @@ public static function tabs_fields() { 'browse_page' => [ 'title' => __('Browse/Search Recipes Page', 'cooked'), /* translators: a description on how to add the [cooked-browse] shortcode to a page */ - 'desc' => sprintf(__('Create a page with the %s shortcode on it, then choose it from this dropdown.', 'cooked'), '[cooked-browse]'), + 'desc' => sprintf(__('Create a page with the %s shortcode on it, then choose it from this dropdown.', 'cooked'), '[cooked-browse]') . '
' . __('Note: This setting is required for the plugin to function properly.', 'cooked') . '', 'type' => 'select', 'default' => 0, 'options' => $pages_array @@ -292,7 +254,7 @@ public static function tabs_fields() { ], 'disable_author_links' => [ 'title' => __('Author Links', 'cooked'), - 'desc' => __('If you do not want the author names to link to the author recipe listings, you can disable them here.', 'cooked'), + 'desc' => __('If you do not want the author names to link to the author recipe listings, you can disable them here.', 'cooked') . '
' . __('Note: Author links require the Browse/Search Recipes Page to be set up correctly to function properly.', 'cooked') . '', 'type' => 'checkboxes', 'color' => 'red', 'default' => [], @@ -655,14 +617,23 @@ public static function field_html($field_name, $html) { public static function field_permalink_field($field_name, $end_of_url) { global $_cooked_settings; - $home_url = get_home_url(); + $browse_page_id = $_cooked_settings['browse_page']; + $browse_page_url = ''; + + if (!empty($browse_page_id) && $field_name !== 'recipe_permalink') { + $browse_page_url = get_permalink( $browse_page_id ); + } + + if (empty($browse_page_url)) { + $browse_page_url = get_home_url(); + } - if (substr($home_url, -1) !== '/') { - $home_url .= '/'; + if (substr($browse_page_url, -1) !== '/') { + $browse_page_url .= '/'; } echo ''; } diff --git a/includes/class.cooked-shortcodes.php b/includes/class.cooked-shortcodes.php index 62d7f44..1fc74b1 100644 --- a/includes/class.cooked-shortcodes.php +++ b/includes/class.cooked-shortcodes.php @@ -436,10 +436,10 @@ public function cooked_info_shortcode($atts, $content = null) { 'exclude' => false, ], $atts); - $left = ( $atts['left'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['left']) ) ) : false ); - $right = ( $atts['right'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['right']) ) ) : false ); - $include = ( $atts['include'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['include']) ) ) : false ); - $exclude = ( $atts['exclude'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['exclude']) ) ) : false ); + $left = $atts['left'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['left']) ) ) : false; + $right = $atts['right'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['right']) ) ) : false; + $include = $atts['include'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['include']) ) ) : false; + $exclude = $atts['exclude'] ? array_map( 'trim', explode( ',', Cooked_Functions::sanitize_text_field($atts['exclude']) ) ) : false; $default_info_array = apply_filters( 'cooked_default_info_array', [ 'author' => __('Author', 'cooked'), @@ -560,7 +560,9 @@ public function cooked_info_shortcode($atts, $content = null) { if ( $cooked_info_html ): add_filter('wp_kses_allowed_html', [$this, 'cooked_kses_servings_switcher']); add_filter('wp_kses_allowed_html', [$this, 'cooked_kses_cooked_donut']); - return '
' . wp_kses_post( $cooked_info_html ) . '
'; + $cooked_info_html = '
' . wp_kses_post( $cooked_info_html ) . '
'; + $cooked_info_html = apply_filters( 'cooked_info_shortcode_output', $cooked_info_html, $recipe_settings ); + return $cooked_info_html; //return '
' . $cooked_info_html . '
'; // @TODO: Fix this endif; } @@ -594,11 +596,20 @@ public static function cooked_info_author() { $browse_page_url = $browse_page_id ? get_permalink( $browse_page_id ) : false; $author = !empty($recipe_settings['author']) ? $recipe_settings['author'] : false; - if ( !empty($author['id']) ) { - $author_slug = !empty($author['name']) ? sanitize_title($author['name']) : false; - // @TODO: Convert the homepage link to use pretty URLs. - $permalink = $front_page_id != $browse_page_id && get_option('permalink_structure') ? esc_url( untrailingslashit( $browse_page_url ) . '/' . $_cooked_settings['recipe_author_permalink'] . '/' . $author['id'] . '/' . trailingslashit( $author_slug ) ) : esc_url( trailingslashit( get_home_url() ) . 'index.php?page_id=' . $_cooked_settings['browse_page'] . '&recipe_author=' . $author['id'] ); - $permalink = apply_filters( 'cooked_author_permalink', $permalink, $author['id'] ); + if ( !empty($author['id']) && !empty($browse_page_id) ) { + // Generate author slug from user_nicename, fallback to user ID if nicename is empty + if ( !empty($author['user_nicename']) ) { + $author_slug = urlencode(sanitize_title($author['user_nicename'])); + } else { + // Fallback to user ID if user_nicename is empty or missing + $author_slug = $author['id']; + } + + $permalink = $front_page_id != $browse_page_id && get_option('permalink_structure') ? + esc_url( untrailingslashit( $browse_page_url ) . '/' . $_cooked_settings['recipe_author_permalink'] . '/' . trailingslashit( $author_slug ) ) : + esc_url( trailingslashit( get_home_url() ) . 'index.php?page_id=' . $_cooked_settings['browse_page'] . '&recipe_author=' . $author['id'] ); + + $permalink = apply_filters( 'cooked_author_permalink', $permalink, $author['id'], $author_slug ); } else { $permalink = false; } @@ -608,8 +619,8 @@ public static function cooked_info_author() { $hide_avatars = isset( $_cooked_settings['hide_author_avatars'][0] ) && $_cooked_settings['hide_author_avatars'][0] == 'hidden' ? true : false; echo ''; - echo !$hide_avatars ? '' . (!empty($author) ? wp_kses_post( $author['profile_photo'] ) : '') . '' : ''; - echo '' . __('Author','cooked') . '' . ( $clickable && $permalink ? '' : '' ) . (!empty($author) ? $author['name'] : '') . ( $clickable && $permalink ? '' : '' ); + echo !$hide_avatars ? '' . ( !empty($author) ? wp_kses_post( $author['profile_photo'] ) : '' ) . '' : ''; + echo '' . __('Author', 'cooked') . '' . ( $clickable && $permalink ? '' : '' ) . (!empty($author) ? $author['name'] : '') . ( $clickable && $permalink ? '' : '' ); echo ''; wp_reset_postdata(); @@ -816,16 +827,18 @@ public function cooked_ingredients_shortcode($atts, $content = null) { ob_start(); + do_action( 'cooked_ingredients_shortcode_before', $recipe_settings ); + if ( isset($recipe_settings['ingredients']) && !empty($recipe_settings['ingredients']) ): echo '
'; - foreach( $recipe_settings['ingredients'] as $ing ): - + foreach ( $recipe_settings['ingredients'] as $ing ): Cooked_Recipes::single_ingredient( $ing, $checkboxes ); - endforeach; echo '
'; endif; + do_action( 'cooked_ingredients_shortcode_after', $recipe_settings ); + return ob_get_clean(); } diff --git a/includes/class.cooked-updates.php b/includes/class.cooked-updates.php new file mode 100644 index 0000000..c3262e2 --- /dev/null +++ b/includes/class.cooked-updates.php @@ -0,0 +1,262 @@ + $update_methods ) { + if ( version_compare( self::$previous_version, $version, '<' ) ) { + foreach ( $update_methods as $method ) { + if ( method_exists( __CLASS__, $method ) ) { + try { + call_user_func( [__CLASS__, $method] ); + } catch ( Exception $e ) { + error_log( sprintf( 'Cooked: Error running update method %s: %s', $method, $e->getMessage() ) ); + } + } + } + } + } + } + + /** + * Define version-specific updates + * + * @return array Array of version updates with their corresponding methods + */ + private static function get_version_updates() { + return apply_filters( 'cooked_version_updates', [ + '1.9.0' => [ + 'update_rewrite_rules' + ], + '1.9.1' => [ + 'update_rewrite_rules' + ], + '1.9.2' => [ + 'update_rewrite_rules' + ], + '1.9.4' => [ + 'update_rewrite_rules' + ], + '1.9.5' => [ + 'update_rewrite_rules' + ], + '1.11.2' => [ + 'fix_recipe_line_endings', + 'update_rewrite_rules' + ], + ]); + } + + /** + * Fix line endings in existing recipes to prevent WordPress exporter/importer issues + * + * @since 1.11.2 + */ + private static function fix_recipe_line_endings() { + // Get all recipe posts + $recipes = get_posts([ + 'post_type' => 'cp_recipe', + 'posts_per_page' => -1, + 'post_status' => 'any' + ]); + + if ( empty($recipes) ) { + return; + } + + $updated_count = 0; + + foreach ( $recipes as $recipe ) { + $recipe_settings = get_post_meta( $recipe->ID, '_recipe_settings', true ); + + if ( empty($recipe_settings) ) { + continue; + } + + $needs_update = false; + + // Fix content field + if ( isset( $recipe_settings['content'] ) ) { + $original_content = $recipe_settings['content']; + $recipe_settings['content'] = str_replace( ["\r\n", "\r"], "\n", $recipe_settings['content'] ); + if ( $original_content !== $recipe_settings['content'] ) { + $needs_update = true; + } + } + + // Fix excerpt field + if ( isset( $recipe_settings['excerpt'] ) ) { + $original_excerpt = $recipe_settings['excerpt']; + $recipe_settings['excerpt'] = str_replace( ["\r\n", "\r"], "\n", $recipe_settings['excerpt'] ); + if ( $original_excerpt !== $recipe_settings['excerpt'] ) { + $needs_update = true; + } + } + + // Fix notes field + if ( isset( $recipe_settings['notes'] ) ) { + $original_notes = $recipe_settings['notes']; + $recipe_settings['notes'] = str_replace( ["\r\n", "\r"], "\n", $recipe_settings['notes'] ); + if ( $original_notes !== $recipe_settings['notes'] ) { + $needs_update = true; + } + } + + // Fix directions content + if ( isset( $recipe_settings['directions'] ) && is_array( $recipe_settings['directions'] ) ) { + foreach ( $recipe_settings['directions'] as $key => $direction ) { + if ( isset( $direction['content'] ) ) { + $original_direction_content = $direction['content']; + $recipe_settings['directions'][$key]['content'] = str_replace( ["\r\n", "\r"], "\n", $direction['content'] ); + if ( $original_direction_content !== $recipe_settings['directions'][$key]['content'] ) { + $needs_update = true; + } + } + } + } + + // Update the recipe if changes were made + if ( $needs_update ) { + update_post_meta( $recipe->ID, '_recipe_settings', $recipe_settings ); + $updated_count++; + } + } + + // Log the update if any recipes were modified + if ( $updated_count > 0 ) { + error_log( sprintf( 'Cooked: Fixed line endings in %d recipes for WordPress exporter/importer compatibility.', $updated_count ) ); + } + } + + /** + * Update rewrite rules if needed + * + * @since 1.11.2 + */ + private static function update_rewrite_rules() { + flush_rewrite_rules(); + error_log( 'Cooked: Flushed rewrite rules due to version update.' ); + } + +} diff --git a/includes/class.cooked-users.php b/includes/class.cooked-users.php index 0b29e06..24f220d 100644 --- a/includes/class.cooked-users.php +++ b/includes/class.cooked-users.php @@ -31,20 +31,29 @@ function __construct() { public static function recipe_author_rewrite() { global $_cooked_settings; - $browse_page_id = ( isset($_cooked_settings['browse_page']) && $_cooked_settings['browse_page'] ? $_cooked_settings['browse_page'] : false ); + $browse_page_id = isset($_cooked_settings['browse_page']) && $_cooked_settings['browse_page'] ? $_cooked_settings['browse_page'] : false; $front_page_id = get_option( 'page_on_front' ); - $browse_page_slug = ( $browse_page_id ? basename( get_permalink( $browse_page_id ) ) : false ); + $browse_page_slug = $browse_page_id ? basename( get_permalink( $browse_page_id ) ) : false; if ( $browse_page_id != $front_page_id ) { add_rewrite_tag('%recipe_author%', '([^&]+)'); if ( isset( $_cooked_settings['browse_page'] ) ) { - add_rewrite_rule('^' . $browse_page_slug . '/' . $_cooked_settings['recipe_author_permalink'] . '/([^/]*)/([^/]*)/page/([^/]*)/?', 'index.php?page_id=' . esc_attr( $_cooked_settings['browse_page'] ) . '&paged=$matches[3]&recipe_author=$matches[1]', 'top' ); + add_rewrite_rule('^' . $browse_page_slug . '/' . $_cooked_settings['recipe_author_permalink'] . '/([^/]*)/page/([^/]*)/?', 'index.php?page_id=' . esc_attr( $_cooked_settings['browse_page'] ) . '&paged=$matches[2]&recipe_author=$matches[1]', 'top' ); add_rewrite_rule('^' . $browse_page_slug . '/' . $_cooked_settings['recipe_author_permalink'] . '/([^/]*)/?', 'index.php?page_id=' . esc_attr( $_cooked_settings['browse_page'] ) . '&recipe_author=$matches[1]', 'top' ); } } } - public static function get( $user_id, $basic = false ) { + public static function get( $user_id = false, $basic = false, $user_nicename = false ) { + if ( !$user_id && $user_nicename ) { + $user = get_user_by( 'slug', $user_nicename ); + if ( $user ) { + $user_id = $user->ID; + } else { + return false; + } + } + $_user = get_userdata( $user_id ); $_user_meta = get_user_meta( $user_id, 'cooked_user_meta', true ); @@ -52,7 +61,7 @@ public static function get( $user_id, $basic = false ) { if ( isset( $_user_meta['profile_photo_id'] ) && $_user_meta['profile_photo_id'] && wp_attachment_is_image( $_user_meta['profile_photo_id'] ) ) { $profile_photo = wp_get_attachment_image( $_user_meta['profile_photo_id'], 'cooked-profile-photo' ); $profile_photo_src = wp_get_attachment_image_src( $_user_meta['profile_photo_id'], 'cooked-profile-photo' ); - $profile_photo_src = ( isset($profile_photo_src[0]) && $profile_photo_src[0] ? $profile_photo_src[0] : false ); + $profile_photo_src = isset($profile_photo_src[0]) && $profile_photo_src[0] ? $profile_photo_src[0] : false; } else { $profile_photo = get_avatar($_user->user_email, 96); $profile_photo_src = get_avatar_url($_user->user_email, ['size' => 96]); @@ -63,6 +72,7 @@ public static function get( $user_id, $basic = false ) { } $_user_data['id'] = $user_id; + $_user_data['user_nicename'] = $_user->user_nicename; $_user_data['name'] = self::format_author_name( $_user->display_name ); $_user_data['profile_photo'] = $profile_photo; $_user_data['profile_photo_src'] = $profile_photo_src; diff --git a/languages/cooked.po b/languages/cooked.po index b681c66..25b37e0 100644 --- a/languages/cooked.po +++ b/languages/cooked.po @@ -41,14 +41,14 @@ msgid "remaining" msgstr "" #: includes/class.cooked-admin-enqueues.php:138 -#: includes/class.cooked-recipe-meta.php:677 -#: includes/class.cooked-recipe-meta.php:732 -#: includes/class.cooked-recipe-meta.php:772 +#: includes/class.cooked-recipe-meta.php:681 +#: includes/class.cooked-recipe-meta.php:736 +#: includes/class.cooked-recipe-meta.php:776 msgid "Add Image" msgstr "" #: includes/class.cooked-admin-enqueues.php:139 -#: includes/class.cooked-recipe-meta.php:677 +#: includes/class.cooked-recipe-meta.php:681 msgid "Change Image" msgstr "" @@ -57,7 +57,7 @@ msgid "Use this Image" msgstr "" #: includes/class.cooked-admin-enqueues.php:141 -#: includes/class.cooked-recipe-meta.php:1004 +#: includes/class.cooked-recipe-meta.php:1008 msgid "Add to Gallery" msgstr "" @@ -99,7 +99,7 @@ msgstr "" #: includes/class.cooked-admin-menus.php:59 #: includes/class.cooked-post-types.php:421 #: includes/class.cooked-post-types.php:433 -#: includes/class.cooked-users.php:144 +#: includes/class.cooked-users.php:154 msgid "Recipes" msgstr "" @@ -112,7 +112,7 @@ msgstr "" #. translators: referring to the bottom of the Settings page. #: includes/class.cooked-admin-menus.php:45 #: includes/class.cooked-admin-menus.php:65 -#: includes/class.cooked-recipe-meta.php:94 +#: includes/class.cooked-recipe-meta.php:98 #: includes/class.cooked-shortcodes.php:149 #: templates/admin/welcome.php:18 msgid "Settings" @@ -143,157 +143,164 @@ msgstr "" msgid "You do not have sufficient permissions to access this page." msgstr "" -#: includes/class.cooked-ajax.php:173 -#: includes/class.cooked-functions.php:127 -#: includes/class.cooked-recipe-meta.php:153 -#: includes/class.cooked-recipe-meta.php:240 -#: includes/class.cooked-recipe-meta.php:1082 +#: includes/class.cooked-ajax.php:174 +#: includes/class.cooked-functions.php:134 +#: includes/class.cooked-recipe-meta.php:157 +#: includes/class.cooked-recipe-meta.php:244 +#: includes/class.cooked-recipe-meta.php:1086 #: includes/class.cooked-recipes.php:636 #: templates/front/recipe.php:34 msgid "Ingredients" msgstr "" -#: includes/class.cooked-ajax.php:173 -#: includes/class.cooked-functions.php:128 -#: includes/class.cooked-recipe-meta.php:153 -#: includes/class.cooked-recipe-meta.php:246 -#: includes/class.cooked-recipe-meta.php:1113 +#: includes/class.cooked-ajax.php:174 +#: includes/class.cooked-functions.php:135 +#: includes/class.cooked-recipe-meta.php:157 +#: includes/class.cooked-recipe-meta.php:250 +#: includes/class.cooked-recipe-meta.php:1117 #: includes/class.cooked-recipes.php:640 #: templates/front/recipe.php:35 msgid "Directions" msgstr "" -#: includes/class.cooked-delicious-recipes.php:102 -#: includes/class.cooked-recipe-maker.php:102 -msgid "Error importing recipe." -msgstr "" - #: includes/class.cooked-enqueues.php:52 -#: includes/class.cooked-recipe-meta.php:1328 +#: includes/class.cooked-recipe-meta.php:1332 msgid "Timer" msgstr "" #. translators: a title for the "What's new in Cooked?" section. -#: includes/class.cooked-functions.php:96 +#: includes/class.cooked-functions.php:103 #, php-format msgid "What's new in %s?" msgstr "" -#: includes/class.cooked-functions.php:120 -#: includes/class.cooked-shortcodes.php:644 +#: includes/class.cooked-functions.php:127 +#: includes/class.cooked-shortcodes.php:655 msgid "Print" msgstr "" -#: includes/class.cooked-functions.php:121 +#: includes/class.cooked-functions.php:128 msgid "Print Options:" msgstr "" -#: includes/class.cooked-functions.php:123 +#: includes/class.cooked-functions.php:130 msgid "Title" msgstr "" -#: includes/class.cooked-functions.php:124 +#: includes/class.cooked-functions.php:131 msgid "Information" msgstr "" -#: includes/class.cooked-functions.php:125 -#: includes/class.cooked-recipe-meta.php:1273 -#: includes/class.cooked-settings.php:256 +#: includes/class.cooked-functions.php:132 +#: includes/class.cooked-recipe-meta.php:1277 +#: includes/class.cooked-settings.php:218 msgid "Excerpt" msgstr "" -#: includes/class.cooked-functions.php:126 +#: includes/class.cooked-functions.php:133 msgid "Images" msgstr "" -#: includes/class.cooked-functions.php:129 -#: includes/class.cooked-recipe-meta.php:1297 +#: includes/class.cooked-functions.php:136 +#: includes/class.cooked-recipe-meta.php:1301 #: includes/class.cooked-recipes.php:643 -#: includes/class.cooked-settings.php:257 -#: includes/class.cooked-shortcodes.php:763 +#: includes/class.cooked-settings.php:219 +#: includes/class.cooked-shortcodes.php:774 msgid "Notes" msgstr "" -#: includes/class.cooked-functions.php:130 -#: includes/class.cooked-recipe-meta.php:252 +#: includes/class.cooked-functions.php:137 +#: includes/class.cooked-recipe-meta.php:256 msgid "Nutrition" msgstr "" #. translators: for displaying singular or plural versions depending on the number of recipes. -#: includes/class.cooked-import.php:42 +#: includes/class.cooked-import.php:46 +#: includes/class.cooked-import.php:100 #, php-format msgid "There is %1$s recipe that should be imported from %2$s." msgid_plural "There are %1$s recipes that should be imported from %2$s." msgstr[0] "" msgstr[1] "" -#: includes/class.cooked-import.php:44 +#: includes/class.cooked-import.php:48 +#: includes/class.cooked-import.php:102 msgid "Before you begin, please make sure you backup your database in case something goes wrong." msgstr "" -#: includes/class.cooked-import.php:46 +#: includes/class.cooked-import.php:50 +#: includes/class.cooked-import.php:104 msgid "Click the button below to import these recipes. Here is what will happen to your recipes:" msgstr "" -#: includes/class.cooked-import.php:48 +#: includes/class.cooked-import.php:52 +#: includes/class.cooked-import.php:106 msgid "Recipes will be imported with the 'Draft' status." msgstr "" -#: includes/class.cooked-import.php:49 +#: includes/class.cooked-import.php:53 +#: includes/class.cooked-import.php:107 msgid "Comments and ratings data will also be imported (ratings are available in Cooked Pro)." msgstr "" -#: includes/class.cooked-import.php:50 +#: includes/class.cooked-import.php:54 +#: includes/class.cooked-import.php:109 msgid "After the import is complete, you can bulk edit the recipes and change their status to 'Published'." msgstr "" -#: includes/class.cooked-import.php:51 +#: includes/class.cooked-import.php:55 msgid "The existing WP Delicious recipes and data will not be modified or deleted." msgstr "" -#: includes/class.cooked-import.php:52 +#: includes/class.cooked-import.php:56 +#: includes/class.cooked-import.php:111 msgid "Certain data that is not suppoted by Cooked will not be imported (such as Cooking Temp, Estimated Cost, Recipe Keywords, etc)." msgstr "" -#: includes/class.cooked-import.php:53 +#: includes/class.cooked-import.php:57 +#: includes/class.cooked-import.php:112 msgid "You can run the import multiple times, but keep in mind that duplicate recipes will be created." msgstr "" -#: includes/class.cooked-import.php:57 +#: includes/class.cooked-import.php:61 +#: includes/class.cooked-import.php:116 #: includes/class.cooked-migration.php:58 msgid "Wow, you have a lot of recipes!" msgstr "" -#: includes/class.cooked-import.php:57 +#: includes/class.cooked-import.php:61 +#: includes/class.cooked-import.php:116 #: includes/class.cooked-migration.php:58 msgid "It is definitely recommended that you get yourself a cup of coffee or tea after clicking this button." msgstr "" -#: includes/class.cooked-import.php:59 +#: includes/class.cooked-import.php:63 +#: includes/class.cooked-import.php:118 #: includes/class.cooked-migration.php:60 msgid "Note:" msgstr "" -#: includes/class.cooked-import.php:59 +#: includes/class.cooked-import.php:63 +#: includes/class.cooked-import.php:118 #: includes/class.cooked-migration.php:60 msgid "The more recipes you have, the longer this will take." msgstr "" -#: includes/class.cooked-import.php:64 -#: includes/class.cooked-import.php:79 +#: includes/class.cooked-import.php:68 +#: includes/class.cooked-import.php:83 msgid "WP Delicious - Import" msgstr "" -#: includes/class.cooked-import.php:93 +#: includes/class.cooked-import.php:152 msgid "More Imports are Coming Soon..." msgstr "" -#: includes/class.cooked-import.php:114 +#: includes/class.cooked-import.php:173 msgid "Begin Import" msgstr "" -#: includes/class.cooked-import.php:119 -#: includes/class.cooked-settings.php:630 +#: includes/class.cooked-import.php:178 +#: includes/class.cooked-settings.php:592 msgid "reload" msgstr "" @@ -577,7 +584,7 @@ msgstr "" #: includes/class.cooked-measurements.php:202 #: includes/class.cooked-recipes.php:799 -#: includes/class.cooked-settings.php:261 +#: includes/class.cooked-settings.php:223 msgid "Servings" msgstr "" @@ -901,442 +908,442 @@ msgstr "" msgid "Current recipe category being viewed." msgstr "" -#: includes/class.cooked-recipe-meta.php:198 +#: includes/class.cooked-recipe-meta.php:202 msgid "Display Recipe" msgstr "" -#: includes/class.cooked-recipe-meta.php:199 +#: includes/class.cooked-recipe-meta.php:203 msgid "This shortcode displays the recipe in its entirety, using the \"Recipe Template\" field in the first tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:234 +#: includes/class.cooked-recipe-meta.php:238 msgid "Layout" msgstr "" -#: includes/class.cooked-recipe-meta.php:258 -#: includes/class.cooked-recipe-meta.php:1194 +#: includes/class.cooked-recipe-meta.php:262 +#: includes/class.cooked-recipe-meta.php:1198 msgid "Gallery" msgstr "" -#: includes/class.cooked-recipe-meta.php:264 +#: includes/class.cooked-recipe-meta.php:268 msgid "Shortcodes" msgstr "" -#: includes/class.cooked-recipe-meta.php:321 +#: includes/class.cooked-recipe-meta.php:325 msgid "Recipe Review Required" msgstr "" #. translators: for displaying singular or plural versions depending on the number of recipes. -#: includes/class.cooked-recipe-meta.php:324 +#: includes/class.cooked-recipe-meta.php:328 #, php-format msgid "It looks like this recipe is from a different version of %s. Please review and click \"Update\" to save it." msgstr "" -#: includes/class.cooked-recipe-meta.php:332 +#: includes/class.cooked-recipe-meta.php:336 msgid "Recipe Shortcode" msgstr "" -#: includes/class.cooked-recipe-meta.php:333 +#: includes/class.cooked-recipe-meta.php:337 msgid "You can use the following shortcode to display your recipe anywhere:" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Recipe Template" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Default Recipe Template" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Choose from the options below to use this layout as the default for new recipes or for all recipes." msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Save as Default" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Apply to All" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Reset" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Using the built-in recipe shortcodes found on the \"Shortcodes\" tab, you can create the layout of your recipe below. Use the \"Save as Default\" button to save your template." msgstr "" -#: includes/class.cooked-recipe-meta.php:365 +#: includes/class.cooked-recipe-meta.php:369 msgid "Recipe Excerpt" msgstr "" -#: includes/class.cooked-recipe-meta.php:365 +#: includes/class.cooked-recipe-meta.php:369 msgid "The excerpt is used on recipe listing templates, where the full recipe should not be displayed." msgstr "" -#: includes/class.cooked-recipe-meta.php:388 +#: includes/class.cooked-recipe-meta.php:392 msgid "SEO Description" msgstr "" -#: includes/class.cooked-recipe-meta.php:388 +#: includes/class.cooked-recipe-meta.php:392 msgid "This description is used for SEO purposes and is optional. By default, Cooked will use the Recipe Excerpt above if available or the Recipe Title if not." msgstr "" -#: includes/class.cooked-recipe-meta.php:399 -#: includes/class.cooked-settings.php:255 +#: includes/class.cooked-recipe-meta.php:403 +#: includes/class.cooked-settings.php:217 msgid "Difficulty Level" msgstr "" -#: includes/class.cooked-recipe-meta.php:408 -#: includes/class.cooked-recipe-meta.php:1056 -#: includes/class.cooked-settings.php:258 +#: includes/class.cooked-recipe-meta.php:412 +#: includes/class.cooked-recipe-meta.php:1060 +#: includes/class.cooked-settings.php:220 #: includes/class.cooked-shortcodes.php:448 -#: includes/class.cooked-shortcodes.php:659 +#: includes/class.cooked-shortcodes.php:670 msgid "Prep Time" msgstr "" -#: includes/class.cooked-recipe-meta.php:410 -#: includes/class.cooked-recipe-meta.php:415 -#: includes/class.cooked-recipe-meta.php:420 +#: includes/class.cooked-recipe-meta.php:414 +#: includes/class.cooked-recipe-meta.php:419 +#: includes/class.cooked-recipe-meta.php:424 msgid "minutes" msgstr "" -#: includes/class.cooked-recipe-meta.php:413 -#: includes/class.cooked-recipe-meta.php:1057 -#: includes/class.cooked-settings.php:259 +#: includes/class.cooked-recipe-meta.php:417 +#: includes/class.cooked-recipe-meta.php:1061 +#: includes/class.cooked-settings.php:221 #: includes/class.cooked-shortcodes.php:449 -#: includes/class.cooked-shortcodes.php:668 +#: includes/class.cooked-shortcodes.php:679 msgid "Cook Time" msgstr "" -#: includes/class.cooked-recipe-meta.php:418 -#: includes/class.cooked-recipe-meta.php:1058 -#: includes/class.cooked-settings.php:260 +#: includes/class.cooked-recipe-meta.php:422 +#: includes/class.cooked-recipe-meta.php:1062 +#: includes/class.cooked-settings.php:222 #: includes/class.cooked-shortcodes.php:450 -#: includes/class.cooked-shortcodes.php:679 -#: includes/class.cooked-shortcodes.php:686 +#: includes/class.cooked-shortcodes.php:690 +#: includes/class.cooked-shortcodes.php:697 msgid "Total Time" msgstr "" -#: includes/class.cooked-recipe-meta.php:426 +#: includes/class.cooked-recipe-meta.php:430 msgid "Recipe Notes" msgstr "" -#: includes/class.cooked-recipe-meta.php:426 +#: includes/class.cooked-recipe-meta.php:430 msgid "The notes are displayed in the recipe." msgstr "" -#: includes/class.cooked-recipe-meta.php:451 +#: includes/class.cooked-recipe-meta.php:455 msgid "Amount" msgstr "" -#: includes/class.cooked-recipe-meta.php:452 +#: includes/class.cooked-recipe-meta.php:456 msgid "Measurement" msgstr "" -#: includes/class.cooked-recipe-meta.php:453 +#: includes/class.cooked-recipe-meta.php:457 msgid "Item" msgstr "" -#: includes/class.cooked-recipe-meta.php:490 -#: includes/class.cooked-recipe-meta.php:563 -#: includes/class.cooked-recipe-meta.php:610 +#: includes/class.cooked-recipe-meta.php:494 +#: includes/class.cooked-recipe-meta.php:567 +#: includes/class.cooked-recipe-meta.php:614 msgid "ex. Eggs, Milk, etc." msgstr "" -#: includes/class.cooked-recipe-meta.php:504 -#: includes/class.cooked-recipe-meta.php:621 -#: includes/class.cooked-recipe-meta.php:693 -#: includes/class.cooked-recipe-meta.php:785 +#: includes/class.cooked-recipe-meta.php:508 +#: includes/class.cooked-recipe-meta.php:625 +#: includes/class.cooked-recipe-meta.php:697 +#: includes/class.cooked-recipe-meta.php:789 msgid "Section Heading" msgstr "" -#: includes/class.cooked-recipe-meta.php:580 +#: includes/class.cooked-recipe-meta.php:584 msgid "Add Ingredient" msgstr "" -#: includes/class.cooked-recipe-meta.php:581 -#: includes/class.cooked-recipe-meta.php:764 +#: includes/class.cooked-recipe-meta.php:585 +#: includes/class.cooked-recipe-meta.php:768 msgid "Add Section Heading" msgstr "" -#: includes/class.cooked-recipe-meta.php:763 +#: includes/class.cooked-recipe-meta.php:767 msgid "Add Direction" msgstr "" -#: includes/class.cooked-recipe-meta.php:820 +#: includes/class.cooked-recipe-meta.php:824 msgid "Nutrition Information" msgstr "" -#: includes/class.cooked-recipe-meta.php:858 -#: includes/class.cooked-shortcodes.php:1048 +#: includes/class.cooked-recipe-meta.php:862 +#: includes/class.cooked-shortcodes.php:1061 msgid "Nutrition Facts" msgstr "" -#: includes/class.cooked-recipe-meta.php:876 -#: includes/class.cooked-shortcodes.php:1016 +#: includes/class.cooked-recipe-meta.php:880 +#: includes/class.cooked-shortcodes.php:1029 msgid "Amount per serving" msgstr "" -#: includes/class.cooked-recipe-meta.php:886 -#: includes/class.cooked-shortcodes.php:1026 +#: includes/class.cooked-recipe-meta.php:890 +#: includes/class.cooked-shortcodes.php:1039 msgid "% Daily Value *" msgstr "" -#: includes/class.cooked-recipe-meta.php:905 -#: includes/class.cooked-shortcodes.php:958 +#: includes/class.cooked-recipe-meta.php:909 +#: includes/class.cooked-shortcodes.php:971 msgid "Includes" msgstr "" -#: includes/class.cooked-recipe-meta.php:937 -#: includes/class.cooked-shortcodes.php:1052 +#: includes/class.cooked-recipe-meta.php:941 +#: includes/class.cooked-shortcodes.php:1065 msgid "The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice." msgstr "" -#: includes/class.cooked-recipe-meta.php:953 +#: includes/class.cooked-recipe-meta.php:957 msgid "Recipe Gallery Type" msgstr "" -#: includes/class.cooked-recipe-meta.php:966 +#: includes/class.cooked-recipe-meta.php:970 msgid "Choose one..." msgstr "" #. translators: a title for the video section of the recipe editor, where users can paste a YouToub or Vimeo URL into the field below. -#: includes/class.cooked-recipe-meta.php:980 +#: includes/class.cooked-recipe-meta.php:984 #, php-format msgid "%1$s or %2$s Video" msgstr "" #. translators: a message describing how to display a video from YouTube or Vimeo. -#: includes/class.cooked-recipe-meta.php:984 +#: includes/class.cooked-recipe-meta.php:988 #, php-format msgid "If you would like to display a video as the first item in your gallery, you can paste a valid %1$s or %2$s URL below." msgstr "" -#: includes/class.cooked-recipe-meta.php:989 +#: includes/class.cooked-recipe-meta.php:993 msgid "Gallery Items" msgstr "" -#: includes/class.cooked-recipe-meta.php:1020 +#: includes/class.cooked-recipe-meta.php:1024 msgid "Recipe Information" msgstr "" -#: includes/class.cooked-recipe-meta.php:1021 +#: includes/class.cooked-recipe-meta.php:1025 msgid "This will display the recipe author, cooking times, etc." msgstr "" #. translators: "include and exclude" section title #. translators: "left and right" section title -#: includes/class.cooked-recipe-meta.php:1030 -#: includes/class.cooked-recipe-meta.php:1040 +#: includes/class.cooked-recipe-meta.php:1034 +#: includes/class.cooked-recipe-meta.php:1044 #, php-format msgid "\"%1$s\" and \"%2$s\"" msgstr "" -#: includes/class.cooked-recipe-meta.php:1032 +#: includes/class.cooked-recipe-meta.php:1036 msgid "This will allow you to include or exclude content from the shortcode output." msgstr "" -#: includes/class.cooked-recipe-meta.php:1041 +#: includes/class.cooked-recipe-meta.php:1045 msgid "Used like \"include\", but will position the content to the left or right." msgstr "" -#: includes/class.cooked-recipe-meta.php:1051 -#: includes/class.cooked-recipe-meta.php:1097 -#: includes/class.cooked-recipe-meta.php:1128 -#: includes/class.cooked-recipe-meta.php:1153 -#: includes/class.cooked-recipe-meta.php:1177 -#: includes/class.cooked-recipe-meta.php:1237 -#: includes/class.cooked-recipe-meta.php:1282 -#: includes/class.cooked-recipe-meta.php:1312 -#: includes/class.cooked-recipe-meta.php:1357 +#: includes/class.cooked-recipe-meta.php:1055 +#: includes/class.cooked-recipe-meta.php:1101 +#: includes/class.cooked-recipe-meta.php:1132 +#: includes/class.cooked-recipe-meta.php:1157 +#: includes/class.cooked-recipe-meta.php:1181 +#: includes/class.cooked-recipe-meta.php:1241 +#: includes/class.cooked-recipe-meta.php:1286 +#: includes/class.cooked-recipe-meta.php:1316 +#: includes/class.cooked-recipe-meta.php:1361 msgid "Available Variables" msgstr "" -#: includes/class.cooked-recipe-meta.php:1055 -#: includes/class.cooked-settings.php:253 +#: includes/class.cooked-recipe-meta.php:1059 +#: includes/class.cooked-settings.php:215 #: includes/class.cooked-shortcodes.php:445 -#: includes/class.cooked-shortcodes.php:612 +#: includes/class.cooked-shortcodes.php:623 msgid "Author" msgstr "" -#: includes/class.cooked-recipe-meta.php:1059 +#: includes/class.cooked-recipe-meta.php:1063 #: includes/class.cooked-shortcodes.php:446 -#: includes/class.cooked-shortcodes.php:623 +#: includes/class.cooked-shortcodes.php:634 msgid "Difficulty" msgstr "" -#: includes/class.cooked-recipe-meta.php:1060 +#: includes/class.cooked-recipe-meta.php:1064 msgid "Servings Switcher" msgstr "" -#: includes/class.cooked-recipe-meta.php:1061 -#: includes/class.cooked-settings.php:254 -#: includes/class.cooked-shortcodes.php:706 -#: includes/class.cooked-shortcodes.php:709 +#: includes/class.cooked-recipe-meta.php:1065 +#: includes/class.cooked-settings.php:216 +#: includes/class.cooked-shortcodes.php:717 +#: includes/class.cooked-shortcodes.php:720 #: includes/class.cooked-taxonomies.php:39 msgid "Category" msgstr "" -#: includes/class.cooked-recipe-meta.php:1062 +#: includes/class.cooked-recipe-meta.php:1066 msgid "Print Mode" msgstr "" -#: includes/class.cooked-recipe-meta.php:1063 +#: includes/class.cooked-recipe-meta.php:1067 msgid "Full-Screen Mode" msgstr "" -#: includes/class.cooked-recipe-meta.php:1083 +#: includes/class.cooked-recipe-meta.php:1087 msgid "This will display the list of ingredients, added via the \"Ingredients\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1089 +#: includes/class.cooked-recipe-meta.php:1093 msgid "This will allow you to hide or show the checkboxes:" msgstr "" -#: includes/class.cooked-recipe-meta.php:1099 +#: includes/class.cooked-recipe-meta.php:1103 msgid "Show checkboxes" msgstr "" -#: includes/class.cooked-recipe-meta.php:1100 +#: includes/class.cooked-recipe-meta.php:1104 msgid "Hide checkboxes" msgstr "" -#: includes/class.cooked-recipe-meta.php:1114 +#: includes/class.cooked-recipe-meta.php:1118 msgid "This will display the list of directions, added via the \"Directions\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1120 +#: includes/class.cooked-recipe-meta.php:1124 msgid "This will allow you to hide or show the numbers:" msgstr "" -#: includes/class.cooked-recipe-meta.php:1130 +#: includes/class.cooked-recipe-meta.php:1134 msgid "Show numbers" msgstr "" -#: includes/class.cooked-recipe-meta.php:1131 +#: includes/class.cooked-recipe-meta.php:1135 msgid "Hide numbers" msgstr "" -#: includes/class.cooked-recipe-meta.php:1144 +#: includes/class.cooked-recipe-meta.php:1148 msgid "Featured Image" msgstr "" -#: includes/class.cooked-recipe-meta.php:1145 +#: includes/class.cooked-recipe-meta.php:1149 msgid "This will display the featured image, if one is set." msgstr "" -#: includes/class.cooked-recipe-meta.php:1155 -#: includes/class.cooked-recipe-meta.php:1179 -#: includes/class.cooked-recipe-meta.php:1284 +#: includes/class.cooked-recipe-meta.php:1159 +#: includes/class.cooked-recipe-meta.php:1183 +#: includes/class.cooked-recipe-meta.php:1288 msgid "None" msgstr "" -#: includes/class.cooked-recipe-meta.php:1168 +#: includes/class.cooked-recipe-meta.php:1172 msgid "Nutrition Label" msgstr "" -#: includes/class.cooked-recipe-meta.php:1169 +#: includes/class.cooked-recipe-meta.php:1173 msgid "This will display the Nutrition Facts label, if data is present." msgstr "" -#: includes/class.cooked-recipe-meta.php:1195 +#: includes/class.cooked-recipe-meta.php:1199 msgid "This will display the gallery, if one is set or created from the \"Gallery\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1203 +#: includes/class.cooked-recipe-meta.php:1207 msgid "Set the width of the gallery." msgstr "" -#: includes/class.cooked-recipe-meta.php:1210 +#: includes/class.cooked-recipe-meta.php:1214 msgid "Set the image size ratio." msgstr "" -#: includes/class.cooked-recipe-meta.php:1220 +#: includes/class.cooked-recipe-meta.php:1224 msgid "Set the navigation style." msgstr "" -#: includes/class.cooked-recipe-meta.php:1227 +#: includes/class.cooked-recipe-meta.php:1231 msgid "Enable or disable \"Full-Screen\" mode." msgstr "" #. translators: related to the width of slideshows: "80% or 300px" section title -#: includes/class.cooked-recipe-meta.php:1242 +#: includes/class.cooked-recipe-meta.php:1246 #, php-format msgid "ex: \"%1$s\" or \"%2$s\"" msgstr "" #. translators: related to the image ratio for slideshows: "ex: 800/600" section title -#: includes/class.cooked-recipe-meta.php:1247 +#: includes/class.cooked-recipe-meta.php:1251 #, php-format msgid "ex: \"%s\"" msgstr "" #. translators: related to the navigation style for slideshows: "dots, thumbs or false" section title -#: includes/class.cooked-recipe-meta.php:1252 +#: includes/class.cooked-recipe-meta.php:1256 #, php-format msgid "\"%1$s\", \"%2$s\", or \"%3$s\"" msgstr "" #. translators: related to allowing full screen for slideshows: "true or false" section title -#: includes/class.cooked-recipe-meta.php:1257 +#: includes/class.cooked-recipe-meta.php:1261 #, php-format msgid "\"%1$s\" or \"%2$s\"" msgstr "" -#: includes/class.cooked-recipe-meta.php:1274 +#: includes/class.cooked-recipe-meta.php:1278 msgid "This will display the excerpt, if one is available from the \"Layout & Content\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1298 +#: includes/class.cooked-recipe-meta.php:1302 msgid "This will display the notes, if one is available from the \"Layout & Content\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1304 +#: includes/class.cooked-recipe-meta.php:1308 msgid "This will allow you to hide or show the header for the notes section:" msgstr "" -#: includes/class.cooked-recipe-meta.php:1314 +#: includes/class.cooked-recipe-meta.php:1318 msgid "Show header" msgstr "" -#: includes/class.cooked-recipe-meta.php:1315 +#: includes/class.cooked-recipe-meta.php:1319 msgid "Hide header" msgstr "" -#: includes/class.cooked-recipe-meta.php:1329 +#: includes/class.cooked-recipe-meta.php:1333 msgid "This will display a special link to start a cooking timer." msgstr "" #. translators: "seconds, minutes and hours" section title -#: includes/class.cooked-recipe-meta.php:1338 +#: includes/class.cooked-recipe-meta.php:1342 #, php-format msgid "\"%1$s\", \"%2$s\" and \"%3$s\"" msgstr "" -#: includes/class.cooked-recipe-meta.php:1340 +#: includes/class.cooked-recipe-meta.php:1344 msgid "Use just one or a combination of all three to set the timer length" msgstr "" -#: includes/class.cooked-recipe-meta.php:1347 +#: includes/class.cooked-recipe-meta.php:1351 msgid "Add a short description for this timer, if applicable." msgstr "" -#: includes/class.cooked-recipe-meta.php:1359 +#: includes/class.cooked-recipe-meta.php:1363 msgid "Time in seconds" msgstr "" -#: includes/class.cooked-recipe-meta.php:1360 +#: includes/class.cooked-recipe-meta.php:1364 msgid "Time in minutes" msgstr "" -#: includes/class.cooked-recipe-meta.php:1361 +#: includes/class.cooked-recipe-meta.php:1365 msgid "Time in hours" msgstr "" -#: includes/class.cooked-recipe-meta.php:1362 +#: includes/class.cooked-recipe-meta.php:1366 msgid "Timer Description" msgstr "" @@ -1440,45 +1447,45 @@ msgstr[1] "" msgid "Step %d" msgstr "" -#: includes/class.cooked-recipes.php:976 +#: includes/class.cooked-recipes.php:981 msgid "Browse" msgstr "" -#: includes/class.cooked-recipes.php:993 -#: includes/class.cooked-settings.php:182 +#: includes/class.cooked-recipes.php:998 +#: includes/class.cooked-settings.php:144 msgid "No categories" msgstr "" -#: includes/class.cooked-recipes.php:996 -#: includes/class.cooked-settings.php:229 +#: includes/class.cooked-recipes.php:1001 +#: includes/class.cooked-settings.php:191 #: includes/class.cooked-taxonomies.php:38 #: includes/class.cooked-taxonomies.php:48 msgid "Categories" msgstr "" -#: includes/class.cooked-recipes.php:998 +#: includes/class.cooked-recipes.php:1003 #: includes/class.cooked-taxonomies.php:41 #: includes/widgets/recipe-categories.php:48 msgid "All Categories" msgstr "" -#: includes/class.cooked-recipes.php:1068 +#: includes/class.cooked-recipes.php:1073 msgid "Find a recipe..." msgstr "" -#: includes/class.cooked-recipes.php:1083 +#: includes/class.cooked-recipes.php:1088 msgid "Newest first" msgstr "" -#: includes/class.cooked-recipes.php:1087 +#: includes/class.cooked-recipes.php:1092 msgid "Oldest first" msgstr "" -#: includes/class.cooked-recipes.php:1091 +#: includes/class.cooked-recipes.php:1096 msgid "Alphabetical (A-Z)" msgstr "" -#: includes/class.cooked-recipes.php:1095 +#: includes/class.cooked-recipes.php:1100 msgid "Alphabetical (Z-A)" msgstr "" @@ -1486,312 +1493,313 @@ msgstr "" msgid "Recipe Editor" msgstr "" -#: includes/class.cooked-settings.php:87 +#: includes/class.cooked-settings.php:85 msgid "Cooked settings has been updated!" msgstr "" -#: includes/class.cooked-settings.php:182 +#: includes/class.cooked-settings.php:144 msgid "No default" msgstr "" -#: includes/class.cooked-settings.php:202 +#: includes/class.cooked-settings.php:164 msgid "General" msgstr "" -#: includes/class.cooked-settings.php:206 +#: includes/class.cooked-settings.php:106 +#: includes/class.cooked-settings.php:168 msgid "Browse/Search Recipes Page" msgstr "" #. translators: a description on how to add the [cooked-browse] shortcode to a page -#: includes/class.cooked-settings.php:208 +#: includes/class.cooked-settings.php:170 #, php-format msgid "Create a page with the %s shortcode on it, then choose it from this dropdown." msgstr "" -#: includes/class.cooked-settings.php:214 +#: includes/class.cooked-settings.php:176 msgid "Recipes Per Page" msgstr "" #. translators: a description on how to choose the default number of recipes per page. -#: includes/class.cooked-settings.php:216 +#: includes/class.cooked-settings.php:178 #, php-format msgid "Choose the default (set via the %s panel) or choose a different number here." msgstr "" #. translators: a description on how to choose the default number of recipes per page. -#: includes/class.cooked-settings.php:216 +#: includes/class.cooked-settings.php:178 msgid "Settings > Reading" msgstr "" -#: includes/class.cooked-settings.php:222 +#: includes/class.cooked-settings.php:184 msgid "Recipe Taxonomies" msgstr "" -#: includes/class.cooked-settings.php:223 +#: includes/class.cooked-settings.php:185 msgid "Choose which taxonomies you want to enable for your recipes." msgstr "" -#: includes/class.cooked-settings.php:234 +#: includes/class.cooked-settings.php:196 msgid "Global Recipe Toggles" msgstr "" -#: includes/class.cooked-settings.php:235 +#: includes/class.cooked-settings.php:197 msgid "You can quickly hide or show different recipe elements (site-wide) with these checkboxes." msgstr "" -#: includes/class.cooked-settings.php:266 +#: includes/class.cooked-settings.php:228 msgid "Carbs Format" msgstr "" -#: includes/class.cooked-settings.php:267 +#: includes/class.cooked-settings.php:229 msgid "You can display carbs as \"Total\" or \"Net\"." msgstr "" -#: includes/class.cooked-settings.php:273 +#: includes/class.cooked-settings.php:235 msgid "Total Carbs" msgstr "" -#: includes/class.cooked-settings.php:274 +#: includes/class.cooked-settings.php:236 msgid "Net Carbs" msgstr "" -#: includes/class.cooked-settings.php:279 +#: includes/class.cooked-settings.php:241 msgid "Author Name Format" msgstr "" -#: includes/class.cooked-settings.php:280 +#: includes/class.cooked-settings.php:242 msgid "You can show the full author's name or just a part of it." msgstr "" -#: includes/class.cooked-settings.php:286 +#: includes/class.cooked-settings.php:248 msgid "Full name" msgstr "" -#: includes/class.cooked-settings.php:287 +#: includes/class.cooked-settings.php:249 msgid "Full first name w/last name initial" msgstr "" -#: includes/class.cooked-settings.php:288 +#: includes/class.cooked-settings.php:250 msgid "First name initial w/full last name" msgstr "" -#: includes/class.cooked-settings.php:289 +#: includes/class.cooked-settings.php:251 msgid "First name only" msgstr "" -#: includes/class.cooked-settings.php:294 +#: includes/class.cooked-settings.php:256 msgid "Author Links" msgstr "" -#: includes/class.cooked-settings.php:295 +#: includes/class.cooked-settings.php:257 msgid "If you do not want the author names to link to the author recipe listings, you can disable them here." msgstr "" -#: includes/class.cooked-settings.php:302 +#: includes/class.cooked-settings.php:264 msgid "Disable Author Links" msgstr "" -#: includes/class.cooked-settings.php:307 +#: includes/class.cooked-settings.php:269 msgid "Default Category" msgstr "" #. translators: a description on how to set the default recipe category for the [cooked-browse] shortcode. -#: includes/class.cooked-settings.php:309 +#: includes/class.cooked-settings.php:271 #, php-format msgid "Optionally set the default recipe category for your %s shortcode display." msgstr "" -#: includes/class.cooked-settings.php:315 +#: includes/class.cooked-settings.php:277 msgid "Default Sort Order" msgstr "" #. translators: a description on how to set the default sort order for the [cooked-browse] shortcode. -#: includes/class.cooked-settings.php:317 +#: includes/class.cooked-settings.php:279 #, php-format msgid "Set the default sort order for your %s shortcode display." msgstr "" -#: includes/class.cooked-settings.php:323 +#: includes/class.cooked-settings.php:285 msgid "Newest First" msgstr "" -#: includes/class.cooked-settings.php:324 +#: includes/class.cooked-settings.php:286 msgid "Oldest First" msgstr "" -#: includes/class.cooked-settings.php:325 +#: includes/class.cooked-settings.php:287 msgid "Alphabetical" msgstr "" -#: includes/class.cooked-settings.php:326 +#: includes/class.cooked-settings.php:288 msgid "Alphabetical (reversed)" msgstr "" -#: includes/class.cooked-settings.php:349 +#: includes/class.cooked-settings.php:311 msgid "WP Editor Roles" msgstr "" -#: includes/class.cooked-settings.php:350 +#: includes/class.cooked-settings.php:312 msgid "Choose which user roles can use the WP Editor for the Excerpt, Directions & Notes fields." msgstr "" -#: includes/class.cooked-settings.php:356 +#: includes/class.cooked-settings.php:318 msgid "Advanced Settings" msgstr "" #. translators: an option to only show recipes with the [cooked-recipe] shortcode. -#: includes/class.cooked-settings.php:366 +#: includes/class.cooked-settings.php:328 msgid "Disable Public Recipes" msgstr "" #. translators: an option to only show recipes with the [cooked-recipe] shortcode. -#: includes/class.cooked-settings.php:366 +#: includes/class.cooked-settings.php:328 #, php-format msgid "Only show recipes using the %s shortcode." msgstr "" #. translators: an option to disable "meta" tags. -#: includes/class.cooked-settings.php:368 +#: includes/class.cooked-settings.php:330 #, php-format msgid "Disable %s Tags" msgstr "" #. translators: an option to disable "meta" tags. -#: includes/class.cooked-settings.php:368 +#: includes/class.cooked-settings.php:330 msgid "Prevents duplicates when tags already exist." msgstr "" -#: includes/class.cooked-settings.php:369 +#: includes/class.cooked-settings.php:331 msgid "Disable \"Servings Switcher\"" msgstr "" -#: includes/class.cooked-settings.php:369 +#: includes/class.cooked-settings.php:331 msgid "Removes the servings dropdown on recipes." msgstr "" -#: includes/class.cooked-settings.php:370 +#: includes/class.cooked-settings.php:332 msgid "Disable Recipe Schema Output" msgstr "" -#: includes/class.cooked-settings.php:370 +#: includes/class.cooked-settings.php:332 msgid "You should only do this if you're using something else to output schema information." msgstr "" -#: includes/class.cooked-settings.php:371 +#: includes/class.cooked-settings.php:333 msgid "Disable Recipe Archive Page" msgstr "" -#: includes/class.cooked-settings.php:371 +#: includes/class.cooked-settings.php:333 msgid "Prevents the recipe archive from being displayed." msgstr "" -#: includes/class.cooked-settings.php:378 +#: includes/class.cooked-settings.php:340 msgid "Design" msgstr "" -#: includes/class.cooked-settings.php:382 +#: includes/class.cooked-settings.php:344 msgid "Dark Mode" msgstr "" -#: includes/class.cooked-settings.php:383 +#: includes/class.cooked-settings.php:345 msgid "If your site has a dark background, you should enable \"Dark Mode\" so that Cooked can match this style." msgstr "" -#: includes/class.cooked-settings.php:389 +#: includes/class.cooked-settings.php:351 msgid "Enable \"Dark Mode\"" msgstr "" -#: includes/class.cooked-settings.php:394 +#: includes/class.cooked-settings.php:356 msgid "Author Images" msgstr "" -#: includes/class.cooked-settings.php:395 +#: includes/class.cooked-settings.php:357 msgid "If you do not want to display the author images (avatars), you can disable them here." msgstr "" -#: includes/class.cooked-settings.php:402 +#: includes/class.cooked-settings.php:364 msgid "Hide Author Images" msgstr "" -#: includes/class.cooked-settings.php:407 +#: includes/class.cooked-settings.php:369 msgid "Main Color" msgstr "" -#: includes/class.cooked-settings.php:408 +#: includes/class.cooked-settings.php:370 msgid "Used on buttons, cooking timer, etc." msgstr "" -#: includes/class.cooked-settings.php:414 +#: includes/class.cooked-settings.php:376 msgid "Main Color (on hover)" msgstr "" -#: includes/class.cooked-settings.php:415 +#: includes/class.cooked-settings.php:377 msgid "Used when hovering over buttons." msgstr "" -#: includes/class.cooked-settings.php:421 +#: includes/class.cooked-settings.php:383 msgid "First Responsive Breakpoint" msgstr "" -#: includes/class.cooked-settings.php:422 +#: includes/class.cooked-settings.php:384 msgid "Set the first responsive breakpoint. Best for large tablets." msgstr "" -#: includes/class.cooked-settings.php:428 +#: includes/class.cooked-settings.php:390 msgid "Second Responsive Breakpoint" msgstr "" -#: includes/class.cooked-settings.php:429 +#: includes/class.cooked-settings.php:391 msgid "Set the second responsive breakpoint. Best for small tablets." msgstr "" -#: includes/class.cooked-settings.php:435 +#: includes/class.cooked-settings.php:397 msgid "Third Responsive Breakpoint" msgstr "" -#: includes/class.cooked-settings.php:436 +#: includes/class.cooked-settings.php:398 msgid "Set the third responsive breakpoint. Best for phones and other small devices." msgstr "" -#: includes/class.cooked-settings.php:444 +#: includes/class.cooked-settings.php:406 msgid "Permalinks" msgstr "" -#: includes/class.cooked-settings.php:448 +#: includes/class.cooked-settings.php:410 msgid "Recipe Permalink" msgstr "" -#: includes/class.cooked-settings.php:451 +#: includes/class.cooked-settings.php:413 msgid "recipe-name" msgstr "" -#: includes/class.cooked-settings.php:455 +#: includes/class.cooked-settings.php:417 msgid "Recipe Author Permalink" msgstr "" -#: includes/class.cooked-settings.php:458 +#: includes/class.cooked-settings.php:420 msgid "author-name" msgstr "" -#: includes/class.cooked-settings.php:462 +#: includes/class.cooked-settings.php:424 msgid "Recipe Category Permalink" msgstr "" -#: includes/class.cooked-settings.php:465 +#: includes/class.cooked-settings.php:427 msgid "recipe-category-name" msgstr "" #. translators: posts_per_page default -#: includes/class.cooked-settings.php:476 +#: includes/class.cooked-settings.php:438 #, php-format msgid "WordPress Default %s" msgstr "" -#: includes/class.cooked-settings.php:481 +#: includes/class.cooked-settings.php:443 msgid "Show All (no pagination)" msgstr "" -#: includes/class.cooked-settings.php:625 +#: includes/class.cooked-settings.php:587 msgid "Begin Migration" msgstr "" @@ -2100,10 +2108,10 @@ msgstr "" msgid "View all recipes" msgstr "" -#: includes/class.cooked-recipe-meta.php:508 -#: includes/class.cooked-recipe-meta.php:625 -#: includes/class.cooked-recipe-meta.php:697 -#: includes/class.cooked-recipe-meta.php:789 +#: includes/class.cooked-recipe-meta.php:512 +#: includes/class.cooked-recipe-meta.php:629 +#: includes/class.cooked-recipe-meta.php:701 +#: includes/class.cooked-recipe-meta.php:793 msgid "Heading Element:" msgstr "" @@ -2120,51 +2128,90 @@ msgstr "" msgid "deciliters" msgstr "" -#: includes/class.cooked-settings.php:331 +#: includes/class.cooked-settings.php:293 msgid "Section Heading Default HTML Tag" msgstr "" #. translators: a description on how to set the default sort order for the [cooked-browse] shortcode. -#: includes/class.cooked-settings.php:333 +#: includes/class.cooked-settings.php:295 msgid "Set the default HTML tag for your section headings." msgstr "" -#: includes/class.cooked-settings.php:339 +#: includes/class.cooked-settings.php:301 msgid "div" msgstr "" -#: includes/class.cooked-settings.php:340 +#: includes/class.cooked-settings.php:302 msgid "h2" msgstr "" -#: includes/class.cooked-settings.php:341 +#: includes/class.cooked-settings.php:303 msgid "h3" msgstr "" -#: includes/class.cooked-settings.php:342 +#: includes/class.cooked-settings.php:304 msgid "h4" msgstr "" -#: includes/class.cooked-settings.php:343 +#: includes/class.cooked-settings.php:305 msgid "h5" msgstr "" -#: includes/class.cooked-settings.php:344 +#: includes/class.cooked-settings.php:306 msgid "h6" msgstr "" -#: includes/class.cooked-recipes.php:1070 +#: includes/class.cooked-recipes.php:1075 msgid "Search" msgstr "" -#: includes/class.cooked-shortcodes.php:650 +#: includes/class.cooked-shortcodes.php:661 msgid "Fullscreen" msgstr "" -#: includes/class.cooked-settings.php:181 +#: includes/class.cooked-settings.php:143 msgid "Choose a page..." msgstr "" -#: includes/class.cooked-settings.php:181 +#: includes/class.cooked-settings.php:143 msgid "No pages" msgstr "" + +#: includes/class.cooked-delicious-recipes.php:102 +msgid "Error importing WP Delicious recipe." +msgstr "" + +#: includes/class.cooked-import.php:108 +msgid "The difficulty level will be set to Beginner since it is not supported by WP Recipe Maker." +msgstr "" + +#: includes/class.cooked-import.php:110 +msgid "The existing WP Recipe Maker and data will not be modified or deleted." +msgstr "" + +#: includes/class.cooked-import.php:123 +#: includes/class.cooked-import.php:138 +msgid "WP Recipe Maker - Import" +msgstr "" + +#: includes/class.cooked-recipe-maker.php:103 +msgid "Error importing WP Recipe Maker recipe." +msgstr "" + +#: includes/class.cooked-settings.php:104 +msgid "Cooked Plugin Setup" +msgstr "" + +#: includes/class.cooked-settings.php:105 +#, php-format +msgid "To display your recipes properly, please set up your %s." +msgstr "" + +#. translators: a description on how to add the [cooked-browse] shortcode to a page +#: includes/class.cooked-settings.php:170 +msgid "Note: This setting is required for the plugin to function properly." +msgstr "" + +#: includes/class.cooked-settings.php:257 +msgid "Note: Author links require the Browse/Search Recipes Page to be set up correctly to function properly." +msgstr "" diff --git a/languages/cooked.pot b/languages/cooked.pot index 7172c38..355fb31 100644 --- a/languages/cooked.pot +++ b/languages/cooked.pot @@ -2,14 +2,14 @@ # This file is distributed under the GPL2. msgid "" msgstr "" -"Project-Id-Version: Cooked - Recipe Management 1.11.1\n" +"Project-Id-Version: Cooked - Recipe Management 1.11.2\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/cooked\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2025-06-13T11:13:27-04:00\n" +"POT-Creation-Date: 2025-09-27T12:25:34-04:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: cooked\n" @@ -44,14 +44,14 @@ msgid "remaining" msgstr "" #: includes/class.cooked-admin-enqueues.php:138 -#: includes/class.cooked-recipe-meta.php:677 -#: includes/class.cooked-recipe-meta.php:732 -#: includes/class.cooked-recipe-meta.php:772 +#: includes/class.cooked-recipe-meta.php:681 +#: includes/class.cooked-recipe-meta.php:736 +#: includes/class.cooked-recipe-meta.php:776 msgid "Add Image" msgstr "" #: includes/class.cooked-admin-enqueues.php:139 -#: includes/class.cooked-recipe-meta.php:677 +#: includes/class.cooked-recipe-meta.php:681 msgid "Change Image" msgstr "" @@ -60,7 +60,7 @@ msgid "Use this Image" msgstr "" #: includes/class.cooked-admin-enqueues.php:141 -#: includes/class.cooked-recipe-meta.php:1004 +#: includes/class.cooked-recipe-meta.php:1008 msgid "Add to Gallery" msgstr "" @@ -102,7 +102,7 @@ msgstr "" #: includes/class.cooked-admin-menus.php:59 #: includes/class.cooked-post-types.php:421 #: includes/class.cooked-post-types.php:433 -#: includes/class.cooked-users.php:144 +#: includes/class.cooked-users.php:154 msgid "Recipes" msgstr "" @@ -115,7 +115,7 @@ msgstr "" #. translators: referring to the bottom of the Settings page. #: includes/class.cooked-admin-menus.php:45 #: includes/class.cooked-admin-menus.php:65 -#: includes/class.cooked-recipe-meta.php:94 +#: includes/class.cooked-recipe-meta.php:98 #: includes/class.cooked-shortcodes.php:149 #: templates/admin/welcome.php:18 msgid "Settings" @@ -146,157 +146,181 @@ msgstr "" msgid "You do not have sufficient permissions to access this page." msgstr "" -#: includes/class.cooked-ajax.php:173 -#: includes/class.cooked-functions.php:127 -#: includes/class.cooked-recipe-meta.php:153 -#: includes/class.cooked-recipe-meta.php:240 -#: includes/class.cooked-recipe-meta.php:1082 +#: includes/class.cooked-ajax.php:174 +#: includes/class.cooked-functions.php:134 +#: includes/class.cooked-recipe-meta.php:157 +#: includes/class.cooked-recipe-meta.php:244 +#: includes/class.cooked-recipe-meta.php:1086 #: includes/class.cooked-recipes.php:636 #: templates/front/recipe.php:34 msgid "Ingredients" msgstr "" -#: includes/class.cooked-ajax.php:173 -#: includes/class.cooked-functions.php:128 -#: includes/class.cooked-recipe-meta.php:153 -#: includes/class.cooked-recipe-meta.php:246 -#: includes/class.cooked-recipe-meta.php:1113 +#: includes/class.cooked-ajax.php:174 +#: includes/class.cooked-functions.php:135 +#: includes/class.cooked-recipe-meta.php:157 +#: includes/class.cooked-recipe-meta.php:250 +#: includes/class.cooked-recipe-meta.php:1117 #: includes/class.cooked-recipes.php:640 #: templates/front/recipe.php:35 msgid "Directions" msgstr "" #: includes/class.cooked-delicious-recipes.php:102 -#: includes/class.cooked-recipe-maker.php:102 -msgid "Error importing recipe." +msgid "Error importing WP Delicious recipe." msgstr "" #: includes/class.cooked-enqueues.php:52 -#: includes/class.cooked-recipe-meta.php:1328 +#: includes/class.cooked-recipe-meta.php:1332 msgid "Timer" msgstr "" #. translators: a title for the "What's new in Cooked?" section. -#: includes/class.cooked-functions.php:96 +#: includes/class.cooked-functions.php:103 #, php-format msgid "What's new in %s?" msgstr "" -#: includes/class.cooked-functions.php:120 -#: includes/class.cooked-shortcodes.php:644 +#: includes/class.cooked-functions.php:127 +#: includes/class.cooked-shortcodes.php:655 msgid "Print" msgstr "" -#: includes/class.cooked-functions.php:121 +#: includes/class.cooked-functions.php:128 msgid "Print Options:" msgstr "" -#: includes/class.cooked-functions.php:123 +#: includes/class.cooked-functions.php:130 msgid "Title" msgstr "" -#: includes/class.cooked-functions.php:124 +#: includes/class.cooked-functions.php:131 msgid "Information" msgstr "" -#: includes/class.cooked-functions.php:125 -#: includes/class.cooked-recipe-meta.php:1273 -#: includes/class.cooked-settings.php:256 +#: includes/class.cooked-functions.php:132 +#: includes/class.cooked-recipe-meta.php:1277 +#: includes/class.cooked-settings.php:218 msgid "Excerpt" msgstr "" -#: includes/class.cooked-functions.php:126 +#: includes/class.cooked-functions.php:133 msgid "Images" msgstr "" -#: includes/class.cooked-functions.php:129 -#: includes/class.cooked-recipe-meta.php:1297 +#: includes/class.cooked-functions.php:136 +#: includes/class.cooked-recipe-meta.php:1301 #: includes/class.cooked-recipes.php:643 -#: includes/class.cooked-settings.php:257 -#: includes/class.cooked-shortcodes.php:763 +#: includes/class.cooked-settings.php:219 +#: includes/class.cooked-shortcodes.php:774 msgid "Notes" msgstr "" -#: includes/class.cooked-functions.php:130 -#: includes/class.cooked-recipe-meta.php:252 +#: includes/class.cooked-functions.php:137 +#: includes/class.cooked-recipe-meta.php:256 msgid "Nutrition" msgstr "" #. translators: for displaying singular or plural versions depending on the number of recipes. -#: includes/class.cooked-import.php:42 +#: includes/class.cooked-import.php:46 +#: includes/class.cooked-import.php:100 #, php-format msgid "There is %1$s recipe that should be imported from %2$s." msgid_plural "There are %1$s recipes that should be imported from %2$s." msgstr[0] "" msgstr[1] "" -#: includes/class.cooked-import.php:44 +#: includes/class.cooked-import.php:48 +#: includes/class.cooked-import.php:102 msgid "Before you begin, please make sure you backup your database in case something goes wrong." msgstr "" -#: includes/class.cooked-import.php:46 +#: includes/class.cooked-import.php:50 +#: includes/class.cooked-import.php:104 msgid "Click the button below to import these recipes. Here is what will happen to your recipes:" msgstr "" -#: includes/class.cooked-import.php:48 +#: includes/class.cooked-import.php:52 +#: includes/class.cooked-import.php:106 msgid "Recipes will be imported with the 'Draft' status." msgstr "" -#: includes/class.cooked-import.php:49 +#: includes/class.cooked-import.php:53 +#: includes/class.cooked-import.php:107 msgid "Comments and ratings data will also be imported (ratings are available in Cooked Pro)." msgstr "" -#: includes/class.cooked-import.php:50 +#: includes/class.cooked-import.php:54 +#: includes/class.cooked-import.php:109 msgid "After the import is complete, you can bulk edit the recipes and change their status to 'Published'." msgstr "" -#: includes/class.cooked-import.php:51 +#: includes/class.cooked-import.php:55 msgid "The existing WP Delicious recipes and data will not be modified or deleted." msgstr "" -#: includes/class.cooked-import.php:52 +#: includes/class.cooked-import.php:56 +#: includes/class.cooked-import.php:111 msgid "Certain data that is not suppoted by Cooked will not be imported (such as Cooking Temp, Estimated Cost, Recipe Keywords, etc)." msgstr "" -#: includes/class.cooked-import.php:53 +#: includes/class.cooked-import.php:57 +#: includes/class.cooked-import.php:112 msgid "You can run the import multiple times, but keep in mind that duplicate recipes will be created." msgstr "" -#: includes/class.cooked-import.php:57 +#: includes/class.cooked-import.php:61 +#: includes/class.cooked-import.php:116 #: includes/class.cooked-migration.php:58 msgid "Wow, you have a lot of recipes!" msgstr "" -#: includes/class.cooked-import.php:57 +#: includes/class.cooked-import.php:61 +#: includes/class.cooked-import.php:116 #: includes/class.cooked-migration.php:58 msgid "It is definitely recommended that you get yourself a cup of coffee or tea after clicking this button." msgstr "" -#: includes/class.cooked-import.php:59 +#: includes/class.cooked-import.php:63 +#: includes/class.cooked-import.php:118 #: includes/class.cooked-migration.php:60 msgid "Note:" msgstr "" -#: includes/class.cooked-import.php:59 +#: includes/class.cooked-import.php:63 +#: includes/class.cooked-import.php:118 #: includes/class.cooked-migration.php:60 msgid "The more recipes you have, the longer this will take." msgstr "" -#: includes/class.cooked-import.php:64 -#: includes/class.cooked-import.php:79 +#: includes/class.cooked-import.php:68 +#: includes/class.cooked-import.php:83 msgid "WP Delicious - Import" msgstr "" -#: includes/class.cooked-import.php:93 +#: includes/class.cooked-import.php:108 +msgid "The difficulty level will be set to Beginner since it is not supported by WP Recipe Maker." +msgstr "" + +#: includes/class.cooked-import.php:110 +msgid "The existing WP Recipe Maker and data will not be modified or deleted." +msgstr "" + +#: includes/class.cooked-import.php:123 +#: includes/class.cooked-import.php:138 +msgid "WP Recipe Maker - Import" +msgstr "" + +#: includes/class.cooked-import.php:152 msgid "More Imports are Coming Soon..." msgstr "" -#: includes/class.cooked-import.php:114 +#: includes/class.cooked-import.php:173 msgid "Begin Import" msgstr "" -#: includes/class.cooked-import.php:119 -#: includes/class.cooked-settings.php:630 +#: includes/class.cooked-import.php:178 +#: includes/class.cooked-settings.php:592 msgid "reload" msgstr "" @@ -593,7 +617,7 @@ msgstr "" #: includes/class.cooked-measurements.php:202 #: includes/class.cooked-recipes.php:799 -#: includes/class.cooked-settings.php:261 +#: includes/class.cooked-settings.php:223 msgid "Servings" msgstr "" @@ -917,449 +941,453 @@ msgstr "" msgid "Current recipe category being viewed." msgstr "" -#: includes/class.cooked-recipe-meta.php:198 +#: includes/class.cooked-recipe-maker.php:103 +msgid "Error importing WP Recipe Maker recipe." +msgstr "" + +#: includes/class.cooked-recipe-meta.php:202 msgid "Display Recipe" msgstr "" -#: includes/class.cooked-recipe-meta.php:199 +#: includes/class.cooked-recipe-meta.php:203 msgid "This shortcode displays the recipe in its entirety, using the \"Recipe Template\" field in the first tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:234 +#: includes/class.cooked-recipe-meta.php:238 msgid "Layout" msgstr "" -#: includes/class.cooked-recipe-meta.php:258 -#: includes/class.cooked-recipe-meta.php:1194 +#: includes/class.cooked-recipe-meta.php:262 +#: includes/class.cooked-recipe-meta.php:1198 msgid "Gallery" msgstr "" -#: includes/class.cooked-recipe-meta.php:264 +#: includes/class.cooked-recipe-meta.php:268 msgid "Shortcodes" msgstr "" -#: includes/class.cooked-recipe-meta.php:321 +#: includes/class.cooked-recipe-meta.php:325 msgid "Recipe Review Required" msgstr "" #. translators: for displaying singular or plural versions depending on the number of recipes. -#: includes/class.cooked-recipe-meta.php:324 +#: includes/class.cooked-recipe-meta.php:328 #, php-format msgid "It looks like this recipe is from a different version of %s. Please review and click \"Update\" to save it." msgstr "" -#: includes/class.cooked-recipe-meta.php:332 +#: includes/class.cooked-recipe-meta.php:336 msgid "Recipe Shortcode" msgstr "" -#: includes/class.cooked-recipe-meta.php:333 +#: includes/class.cooked-recipe-meta.php:337 msgid "You can use the following shortcode to display your recipe anywhere:" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Recipe Template" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Default Recipe Template" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Choose from the options below to use this layout as the default for new recipes or for all recipes." msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Save as Default" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Apply to All" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Reset" msgstr "" -#: includes/class.cooked-recipe-meta.php:347 +#: includes/class.cooked-recipe-meta.php:351 msgid "Using the built-in recipe shortcodes found on the \"Shortcodes\" tab, you can create the layout of your recipe below. Use the \"Save as Default\" button to save your template." msgstr "" -#: includes/class.cooked-recipe-meta.php:365 +#: includes/class.cooked-recipe-meta.php:369 msgid "Recipe Excerpt" msgstr "" -#: includes/class.cooked-recipe-meta.php:365 +#: includes/class.cooked-recipe-meta.php:369 msgid "The excerpt is used on recipe listing templates, where the full recipe should not be displayed." msgstr "" -#: includes/class.cooked-recipe-meta.php:388 +#: includes/class.cooked-recipe-meta.php:392 msgid "SEO Description" msgstr "" -#: includes/class.cooked-recipe-meta.php:388 +#: includes/class.cooked-recipe-meta.php:392 msgid "This description is used for SEO purposes and is optional. By default, Cooked will use the Recipe Excerpt above if available or the Recipe Title if not." msgstr "" -#: includes/class.cooked-recipe-meta.php:399 -#: includes/class.cooked-settings.php:255 +#: includes/class.cooked-recipe-meta.php:403 +#: includes/class.cooked-settings.php:217 msgid "Difficulty Level" msgstr "" -#: includes/class.cooked-recipe-meta.php:408 -#: includes/class.cooked-recipe-meta.php:1056 -#: includes/class.cooked-settings.php:258 +#: includes/class.cooked-recipe-meta.php:412 +#: includes/class.cooked-recipe-meta.php:1060 +#: includes/class.cooked-settings.php:220 #: includes/class.cooked-shortcodes.php:448 -#: includes/class.cooked-shortcodes.php:659 +#: includes/class.cooked-shortcodes.php:670 msgid "Prep Time" msgstr "" -#: includes/class.cooked-recipe-meta.php:410 -#: includes/class.cooked-recipe-meta.php:415 -#: includes/class.cooked-recipe-meta.php:420 +#: includes/class.cooked-recipe-meta.php:414 +#: includes/class.cooked-recipe-meta.php:419 +#: includes/class.cooked-recipe-meta.php:424 msgid "minutes" msgstr "" -#: includes/class.cooked-recipe-meta.php:413 -#: includes/class.cooked-recipe-meta.php:1057 -#: includes/class.cooked-settings.php:259 +#: includes/class.cooked-recipe-meta.php:417 +#: includes/class.cooked-recipe-meta.php:1061 +#: includes/class.cooked-settings.php:221 #: includes/class.cooked-shortcodes.php:449 -#: includes/class.cooked-shortcodes.php:668 +#: includes/class.cooked-shortcodes.php:679 msgid "Cook Time" msgstr "" -#: includes/class.cooked-recipe-meta.php:418 -#: includes/class.cooked-recipe-meta.php:1058 -#: includes/class.cooked-settings.php:260 +#: includes/class.cooked-recipe-meta.php:422 +#: includes/class.cooked-recipe-meta.php:1062 +#: includes/class.cooked-settings.php:222 #: includes/class.cooked-shortcodes.php:450 -#: includes/class.cooked-shortcodes.php:679 -#: includes/class.cooked-shortcodes.php:686 +#: includes/class.cooked-shortcodes.php:690 +#: includes/class.cooked-shortcodes.php:697 msgid "Total Time" msgstr "" -#: includes/class.cooked-recipe-meta.php:426 +#: includes/class.cooked-recipe-meta.php:430 msgid "Recipe Notes" msgstr "" -#: includes/class.cooked-recipe-meta.php:426 +#: includes/class.cooked-recipe-meta.php:430 msgid "The notes are displayed in the recipe." msgstr "" -#: includes/class.cooked-recipe-meta.php:451 +#: includes/class.cooked-recipe-meta.php:455 msgid "Amount" msgstr "" -#: includes/class.cooked-recipe-meta.php:452 +#: includes/class.cooked-recipe-meta.php:456 msgid "Measurement" msgstr "" -#: includes/class.cooked-recipe-meta.php:453 +#: includes/class.cooked-recipe-meta.php:457 msgid "Item" msgstr "" -#: includes/class.cooked-recipe-meta.php:490 -#: includes/class.cooked-recipe-meta.php:563 -#: includes/class.cooked-recipe-meta.php:610 +#: includes/class.cooked-recipe-meta.php:494 +#: includes/class.cooked-recipe-meta.php:567 +#: includes/class.cooked-recipe-meta.php:614 msgid "ex. Eggs, Milk, etc." msgstr "" -#: includes/class.cooked-recipe-meta.php:504 -#: includes/class.cooked-recipe-meta.php:621 -#: includes/class.cooked-recipe-meta.php:693 -#: includes/class.cooked-recipe-meta.php:785 -msgid "Section Heading" -msgstr "" - #: includes/class.cooked-recipe-meta.php:508 #: includes/class.cooked-recipe-meta.php:625 #: includes/class.cooked-recipe-meta.php:697 #: includes/class.cooked-recipe-meta.php:789 +msgid "Section Heading" +msgstr "" + +#: includes/class.cooked-recipe-meta.php:512 +#: includes/class.cooked-recipe-meta.php:629 +#: includes/class.cooked-recipe-meta.php:701 +#: includes/class.cooked-recipe-meta.php:793 msgid "Heading Element:" msgstr "" -#: includes/class.cooked-recipe-meta.php:580 +#: includes/class.cooked-recipe-meta.php:584 msgid "Add Ingredient" msgstr "" -#: includes/class.cooked-recipe-meta.php:581 -#: includes/class.cooked-recipe-meta.php:764 +#: includes/class.cooked-recipe-meta.php:585 +#: includes/class.cooked-recipe-meta.php:768 msgid "Add Section Heading" msgstr "" -#: includes/class.cooked-recipe-meta.php:763 +#: includes/class.cooked-recipe-meta.php:767 msgid "Add Direction" msgstr "" -#: includes/class.cooked-recipe-meta.php:820 +#: includes/class.cooked-recipe-meta.php:824 msgid "Nutrition Information" msgstr "" -#: includes/class.cooked-recipe-meta.php:858 -#: includes/class.cooked-shortcodes.php:1048 +#: includes/class.cooked-recipe-meta.php:862 +#: includes/class.cooked-shortcodes.php:1061 msgid "Nutrition Facts" msgstr "" -#: includes/class.cooked-recipe-meta.php:876 -#: includes/class.cooked-shortcodes.php:1016 +#: includes/class.cooked-recipe-meta.php:880 +#: includes/class.cooked-shortcodes.php:1029 msgid "Amount per serving" msgstr "" -#: includes/class.cooked-recipe-meta.php:886 -#: includes/class.cooked-shortcodes.php:1026 +#: includes/class.cooked-recipe-meta.php:890 +#: includes/class.cooked-shortcodes.php:1039 msgid "% Daily Value *" msgstr "" -#: includes/class.cooked-recipe-meta.php:905 -#: includes/class.cooked-shortcodes.php:958 +#: includes/class.cooked-recipe-meta.php:909 +#: includes/class.cooked-shortcodes.php:971 msgid "Includes" msgstr "" -#: includes/class.cooked-recipe-meta.php:937 -#: includes/class.cooked-shortcodes.php:1052 +#: includes/class.cooked-recipe-meta.php:941 +#: includes/class.cooked-shortcodes.php:1065 msgid "The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice." msgstr "" -#: includes/class.cooked-recipe-meta.php:953 +#: includes/class.cooked-recipe-meta.php:957 msgid "Recipe Gallery Type" msgstr "" -#: includes/class.cooked-recipe-meta.php:966 +#: includes/class.cooked-recipe-meta.php:970 msgid "Choose one..." msgstr "" #. translators: a title for the video section of the recipe editor, where users can paste a YouToub or Vimeo URL into the field below. -#: includes/class.cooked-recipe-meta.php:980 +#: includes/class.cooked-recipe-meta.php:984 #, php-format msgid "%1$s or %2$s Video" msgstr "" #. translators: a message describing how to display a video from YouTube or Vimeo. -#: includes/class.cooked-recipe-meta.php:984 +#: includes/class.cooked-recipe-meta.php:988 #, php-format msgid "If you would like to display a video as the first item in your gallery, you can paste a valid %1$s or %2$s URL below." msgstr "" -#: includes/class.cooked-recipe-meta.php:989 +#: includes/class.cooked-recipe-meta.php:993 msgid "Gallery Items" msgstr "" -#: includes/class.cooked-recipe-meta.php:1020 +#: includes/class.cooked-recipe-meta.php:1024 msgid "Recipe Information" msgstr "" -#: includes/class.cooked-recipe-meta.php:1021 +#: includes/class.cooked-recipe-meta.php:1025 msgid "This will display the recipe author, cooking times, etc." msgstr "" #. translators: "include and exclude" section title #. translators: "left and right" section title -#: includes/class.cooked-recipe-meta.php:1030 -#: includes/class.cooked-recipe-meta.php:1040 +#: includes/class.cooked-recipe-meta.php:1034 +#: includes/class.cooked-recipe-meta.php:1044 #, php-format msgid "\"%1$s\" and \"%2$s\"" msgstr "" -#: includes/class.cooked-recipe-meta.php:1032 +#: includes/class.cooked-recipe-meta.php:1036 msgid "This will allow you to include or exclude content from the shortcode output." msgstr "" -#: includes/class.cooked-recipe-meta.php:1041 +#: includes/class.cooked-recipe-meta.php:1045 msgid "Used like \"include\", but will position the content to the left or right." msgstr "" -#: includes/class.cooked-recipe-meta.php:1051 -#: includes/class.cooked-recipe-meta.php:1097 -#: includes/class.cooked-recipe-meta.php:1128 -#: includes/class.cooked-recipe-meta.php:1153 -#: includes/class.cooked-recipe-meta.php:1177 -#: includes/class.cooked-recipe-meta.php:1237 -#: includes/class.cooked-recipe-meta.php:1282 -#: includes/class.cooked-recipe-meta.php:1312 -#: includes/class.cooked-recipe-meta.php:1357 +#: includes/class.cooked-recipe-meta.php:1055 +#: includes/class.cooked-recipe-meta.php:1101 +#: includes/class.cooked-recipe-meta.php:1132 +#: includes/class.cooked-recipe-meta.php:1157 +#: includes/class.cooked-recipe-meta.php:1181 +#: includes/class.cooked-recipe-meta.php:1241 +#: includes/class.cooked-recipe-meta.php:1286 +#: includes/class.cooked-recipe-meta.php:1316 +#: includes/class.cooked-recipe-meta.php:1361 msgid "Available Variables" msgstr "" -#: includes/class.cooked-recipe-meta.php:1055 -#: includes/class.cooked-settings.php:253 +#: includes/class.cooked-recipe-meta.php:1059 +#: includes/class.cooked-settings.php:215 #: includes/class.cooked-shortcodes.php:445 -#: includes/class.cooked-shortcodes.php:612 +#: includes/class.cooked-shortcodes.php:623 msgid "Author" msgstr "" -#: includes/class.cooked-recipe-meta.php:1059 +#: includes/class.cooked-recipe-meta.php:1063 #: includes/class.cooked-shortcodes.php:446 -#: includes/class.cooked-shortcodes.php:623 +#: includes/class.cooked-shortcodes.php:634 msgid "Difficulty" msgstr "" -#: includes/class.cooked-recipe-meta.php:1060 +#: includes/class.cooked-recipe-meta.php:1064 msgid "Servings Switcher" msgstr "" -#: includes/class.cooked-recipe-meta.php:1061 -#: includes/class.cooked-settings.php:254 -#: includes/class.cooked-shortcodes.php:706 -#: includes/class.cooked-shortcodes.php:709 +#: includes/class.cooked-recipe-meta.php:1065 +#: includes/class.cooked-settings.php:216 +#: includes/class.cooked-shortcodes.php:717 +#: includes/class.cooked-shortcodes.php:720 #: includes/class.cooked-taxonomies.php:39 msgid "Category" msgstr "" -#: includes/class.cooked-recipe-meta.php:1062 +#: includes/class.cooked-recipe-meta.php:1066 msgid "Print Mode" msgstr "" -#: includes/class.cooked-recipe-meta.php:1063 +#: includes/class.cooked-recipe-meta.php:1067 msgid "Full-Screen Mode" msgstr "" -#: includes/class.cooked-recipe-meta.php:1083 +#: includes/class.cooked-recipe-meta.php:1087 msgid "This will display the list of ingredients, added via the \"Ingredients\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1089 +#: includes/class.cooked-recipe-meta.php:1093 msgid "This will allow you to hide or show the checkboxes:" msgstr "" -#: includes/class.cooked-recipe-meta.php:1099 +#: includes/class.cooked-recipe-meta.php:1103 msgid "Show checkboxes" msgstr "" -#: includes/class.cooked-recipe-meta.php:1100 +#: includes/class.cooked-recipe-meta.php:1104 msgid "Hide checkboxes" msgstr "" -#: includes/class.cooked-recipe-meta.php:1114 +#: includes/class.cooked-recipe-meta.php:1118 msgid "This will display the list of directions, added via the \"Directions\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1120 +#: includes/class.cooked-recipe-meta.php:1124 msgid "This will allow you to hide or show the numbers:" msgstr "" -#: includes/class.cooked-recipe-meta.php:1130 +#: includes/class.cooked-recipe-meta.php:1134 msgid "Show numbers" msgstr "" -#: includes/class.cooked-recipe-meta.php:1131 +#: includes/class.cooked-recipe-meta.php:1135 msgid "Hide numbers" msgstr "" -#: includes/class.cooked-recipe-meta.php:1144 +#: includes/class.cooked-recipe-meta.php:1148 msgid "Featured Image" msgstr "" -#: includes/class.cooked-recipe-meta.php:1145 +#: includes/class.cooked-recipe-meta.php:1149 msgid "This will display the featured image, if one is set." msgstr "" -#: includes/class.cooked-recipe-meta.php:1155 -#: includes/class.cooked-recipe-meta.php:1179 -#: includes/class.cooked-recipe-meta.php:1284 +#: includes/class.cooked-recipe-meta.php:1159 +#: includes/class.cooked-recipe-meta.php:1183 +#: includes/class.cooked-recipe-meta.php:1288 msgid "None" msgstr "" -#: includes/class.cooked-recipe-meta.php:1168 +#: includes/class.cooked-recipe-meta.php:1172 msgid "Nutrition Label" msgstr "" -#: includes/class.cooked-recipe-meta.php:1169 +#: includes/class.cooked-recipe-meta.php:1173 msgid "This will display the Nutrition Facts label, if data is present." msgstr "" -#: includes/class.cooked-recipe-meta.php:1195 +#: includes/class.cooked-recipe-meta.php:1199 msgid "This will display the gallery, if one is set or created from the \"Gallery\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1203 +#: includes/class.cooked-recipe-meta.php:1207 msgid "Set the width of the gallery." msgstr "" -#: includes/class.cooked-recipe-meta.php:1210 +#: includes/class.cooked-recipe-meta.php:1214 msgid "Set the image size ratio." msgstr "" -#: includes/class.cooked-recipe-meta.php:1220 +#: includes/class.cooked-recipe-meta.php:1224 msgid "Set the navigation style." msgstr "" -#: includes/class.cooked-recipe-meta.php:1227 +#: includes/class.cooked-recipe-meta.php:1231 msgid "Enable or disable \"Full-Screen\" mode." msgstr "" #. translators: related to the width of slideshows: "80% or 300px" section title -#: includes/class.cooked-recipe-meta.php:1242 +#: includes/class.cooked-recipe-meta.php:1246 #, php-format msgid "ex: \"%1$s\" or \"%2$s\"" msgstr "" #. translators: related to the image ratio for slideshows: "ex: 800/600" section title -#: includes/class.cooked-recipe-meta.php:1247 +#: includes/class.cooked-recipe-meta.php:1251 #, php-format msgid "ex: \"%s\"" msgstr "" #. translators: related to the navigation style for slideshows: "dots, thumbs or false" section title -#: includes/class.cooked-recipe-meta.php:1252 +#: includes/class.cooked-recipe-meta.php:1256 #, php-format msgid "\"%1$s\", \"%2$s\", or \"%3$s\"" msgstr "" #. translators: related to allowing full screen for slideshows: "true or false" section title -#: includes/class.cooked-recipe-meta.php:1257 +#: includes/class.cooked-recipe-meta.php:1261 #, php-format msgid "\"%1$s\" or \"%2$s\"" msgstr "" -#: includes/class.cooked-recipe-meta.php:1274 +#: includes/class.cooked-recipe-meta.php:1278 msgid "This will display the excerpt, if one is available from the \"Layout & Content\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1298 +#: includes/class.cooked-recipe-meta.php:1302 msgid "This will display the notes, if one is available from the \"Layout & Content\" tab." msgstr "" -#: includes/class.cooked-recipe-meta.php:1304 +#: includes/class.cooked-recipe-meta.php:1308 msgid "This will allow you to hide or show the header for the notes section:" msgstr "" -#: includes/class.cooked-recipe-meta.php:1314 +#: includes/class.cooked-recipe-meta.php:1318 msgid "Show header" msgstr "" -#: includes/class.cooked-recipe-meta.php:1315 +#: includes/class.cooked-recipe-meta.php:1319 msgid "Hide header" msgstr "" -#: includes/class.cooked-recipe-meta.php:1329 +#: includes/class.cooked-recipe-meta.php:1333 msgid "This will display a special link to start a cooking timer." msgstr "" #. translators: "seconds, minutes and hours" section title -#: includes/class.cooked-recipe-meta.php:1338 +#: includes/class.cooked-recipe-meta.php:1342 #, php-format msgid "\"%1$s\", \"%2$s\" and \"%3$s\"" msgstr "" -#: includes/class.cooked-recipe-meta.php:1340 +#: includes/class.cooked-recipe-meta.php:1344 msgid "Use just one or a combination of all three to set the timer length" msgstr "" -#: includes/class.cooked-recipe-meta.php:1347 +#: includes/class.cooked-recipe-meta.php:1351 msgid "Add a short description for this timer, if applicable." msgstr "" -#: includes/class.cooked-recipe-meta.php:1359 +#: includes/class.cooked-recipe-meta.php:1363 msgid "Time in seconds" msgstr "" -#: includes/class.cooked-recipe-meta.php:1360 +#: includes/class.cooked-recipe-meta.php:1364 msgid "Time in minutes" msgstr "" -#: includes/class.cooked-recipe-meta.php:1361 +#: includes/class.cooked-recipe-meta.php:1365 msgid "Time in hours" msgstr "" -#: includes/class.cooked-recipe-meta.php:1362 +#: includes/class.cooked-recipe-meta.php:1366 msgid "Timer Description" msgstr "" @@ -1463,49 +1491,49 @@ msgstr[1] "" msgid "Step %d" msgstr "" -#: includes/class.cooked-recipes.php:976 +#: includes/class.cooked-recipes.php:981 msgid "Browse" msgstr "" -#: includes/class.cooked-recipes.php:993 -#: includes/class.cooked-settings.php:182 +#: includes/class.cooked-recipes.php:998 +#: includes/class.cooked-settings.php:144 msgid "No categories" msgstr "" -#: includes/class.cooked-recipes.php:996 -#: includes/class.cooked-settings.php:229 +#: includes/class.cooked-recipes.php:1001 +#: includes/class.cooked-settings.php:191 #: includes/class.cooked-taxonomies.php:38 #: includes/class.cooked-taxonomies.php:48 msgid "Categories" msgstr "" -#: includes/class.cooked-recipes.php:998 +#: includes/class.cooked-recipes.php:1003 #: includes/class.cooked-taxonomies.php:41 #: includes/widgets/recipe-categories.php:48 msgid "All Categories" msgstr "" -#: includes/class.cooked-recipes.php:1068 +#: includes/class.cooked-recipes.php:1073 msgid "Find a recipe..." msgstr "" -#: includes/class.cooked-recipes.php:1070 +#: includes/class.cooked-recipes.php:1075 msgid "Search" msgstr "" -#: includes/class.cooked-recipes.php:1083 +#: includes/class.cooked-recipes.php:1088 msgid "Newest first" msgstr "" -#: includes/class.cooked-recipes.php:1087 +#: includes/class.cooked-recipes.php:1092 msgid "Oldest first" msgstr "" -#: includes/class.cooked-recipes.php:1091 +#: includes/class.cooked-recipes.php:1096 msgid "Alphabetical (A-Z)" msgstr "" -#: includes/class.cooked-recipes.php:1095 +#: includes/class.cooked-recipes.php:1100 msgid "Alphabetical (Z-A)" msgstr "" @@ -1513,353 +1541,372 @@ msgstr "" msgid "Recipe Editor" msgstr "" -#: includes/class.cooked-settings.php:87 +#: includes/class.cooked-settings.php:85 msgid "Cooked settings has been updated!" msgstr "" -#: includes/class.cooked-settings.php:181 +#: includes/class.cooked-settings.php:104 +msgid "Cooked Plugin Setup" +msgstr "" + +#: includes/class.cooked-settings.php:105 +#, php-format +msgid "To display your recipes properly, please set up your %s." +msgstr "" + +#: includes/class.cooked-settings.php:106 +#: includes/class.cooked-settings.php:168 +msgid "Browse/Search Recipes Page" +msgstr "" + +#: includes/class.cooked-settings.php:143 msgid "Choose a page..." msgstr "" -#: includes/class.cooked-settings.php:181 +#: includes/class.cooked-settings.php:143 msgid "No pages" msgstr "" -#: includes/class.cooked-settings.php:182 +#: includes/class.cooked-settings.php:144 msgid "No default" msgstr "" -#: includes/class.cooked-settings.php:202 +#: includes/class.cooked-settings.php:164 msgid "General" msgstr "" -#: includes/class.cooked-settings.php:206 -msgid "Browse/Search Recipes Page" -msgstr "" - #. translators: a description on how to add the [cooked-browse] shortcode to a page -#: includes/class.cooked-settings.php:208 +#: includes/class.cooked-settings.php:170 #, php-format msgid "Create a page with the %s shortcode on it, then choose it from this dropdown." msgstr "" -#: includes/class.cooked-settings.php:214 +#. translators: a description on how to add the [cooked-browse] shortcode to a page +#: includes/class.cooked-settings.php:170 +msgid "Note: This setting is required for the plugin to function properly." +msgstr "" + +#: includes/class.cooked-settings.php:176 msgid "Recipes Per Page" msgstr "" #. translators: a description on how to choose the default number of recipes per page. -#: includes/class.cooked-settings.php:216 +#: includes/class.cooked-settings.php:178 #, php-format msgid "Choose the default (set via the %s panel) or choose a different number here." msgstr "" #. translators: a description on how to choose the default number of recipes per page. -#: includes/class.cooked-settings.php:216 +#: includes/class.cooked-settings.php:178 msgid "Settings > Reading" msgstr "" -#: includes/class.cooked-settings.php:222 +#: includes/class.cooked-settings.php:184 msgid "Recipe Taxonomies" msgstr "" -#: includes/class.cooked-settings.php:223 +#: includes/class.cooked-settings.php:185 msgid "Choose which taxonomies you want to enable for your recipes." msgstr "" -#: includes/class.cooked-settings.php:234 +#: includes/class.cooked-settings.php:196 msgid "Global Recipe Toggles" msgstr "" -#: includes/class.cooked-settings.php:235 +#: includes/class.cooked-settings.php:197 msgid "You can quickly hide or show different recipe elements (site-wide) with these checkboxes." msgstr "" -#: includes/class.cooked-settings.php:266 +#: includes/class.cooked-settings.php:228 msgid "Carbs Format" msgstr "" -#: includes/class.cooked-settings.php:267 +#: includes/class.cooked-settings.php:229 msgid "You can display carbs as \"Total\" or \"Net\"." msgstr "" -#: includes/class.cooked-settings.php:273 +#: includes/class.cooked-settings.php:235 msgid "Total Carbs" msgstr "" -#: includes/class.cooked-settings.php:274 +#: includes/class.cooked-settings.php:236 msgid "Net Carbs" msgstr "" -#: includes/class.cooked-settings.php:279 +#: includes/class.cooked-settings.php:241 msgid "Author Name Format" msgstr "" -#: includes/class.cooked-settings.php:280 +#: includes/class.cooked-settings.php:242 msgid "You can show the full author's name or just a part of it." msgstr "" -#: includes/class.cooked-settings.php:286 +#: includes/class.cooked-settings.php:248 msgid "Full name" msgstr "" -#: includes/class.cooked-settings.php:287 +#: includes/class.cooked-settings.php:249 msgid "Full first name w/last name initial" msgstr "" -#: includes/class.cooked-settings.php:288 +#: includes/class.cooked-settings.php:250 msgid "First name initial w/full last name" msgstr "" -#: includes/class.cooked-settings.php:289 +#: includes/class.cooked-settings.php:251 msgid "First name only" msgstr "" -#: includes/class.cooked-settings.php:294 +#: includes/class.cooked-settings.php:256 msgid "Author Links" msgstr "" -#: includes/class.cooked-settings.php:295 +#: includes/class.cooked-settings.php:257 msgid "If you do not want the author names to link to the author recipe listings, you can disable them here." msgstr "" -#: includes/class.cooked-settings.php:302 +#: includes/class.cooked-settings.php:257 +msgid "Note: Author links require the Browse/Search Recipes Page to be set up correctly to function properly." +msgstr "" + +#: includes/class.cooked-settings.php:264 msgid "Disable Author Links" msgstr "" -#: includes/class.cooked-settings.php:307 +#: includes/class.cooked-settings.php:269 msgid "Default Category" msgstr "" #. translators: a description on how to set the default recipe category for the [cooked-browse] shortcode. -#: includes/class.cooked-settings.php:309 +#: includes/class.cooked-settings.php:271 #, php-format msgid "Optionally set the default recipe category for your %s shortcode display." msgstr "" -#: includes/class.cooked-settings.php:315 +#: includes/class.cooked-settings.php:277 msgid "Default Sort Order" msgstr "" #. translators: a description on how to set the default sort order for the [cooked-browse] shortcode. -#: includes/class.cooked-settings.php:317 +#: includes/class.cooked-settings.php:279 #, php-format msgid "Set the default sort order for your %s shortcode display." msgstr "" -#: includes/class.cooked-settings.php:323 +#: includes/class.cooked-settings.php:285 msgid "Newest First" msgstr "" -#: includes/class.cooked-settings.php:324 +#: includes/class.cooked-settings.php:286 msgid "Oldest First" msgstr "" -#: includes/class.cooked-settings.php:325 +#: includes/class.cooked-settings.php:287 msgid "Alphabetical" msgstr "" -#: includes/class.cooked-settings.php:326 +#: includes/class.cooked-settings.php:288 msgid "Alphabetical (reversed)" msgstr "" -#: includes/class.cooked-settings.php:331 +#: includes/class.cooked-settings.php:293 msgid "Section Heading Default HTML Tag" msgstr "" #. translators: a description on how to set the default sort order for the [cooked-browse] shortcode. -#: includes/class.cooked-settings.php:333 +#: includes/class.cooked-settings.php:295 msgid "Set the default HTML tag for your section headings." msgstr "" -#: includes/class.cooked-settings.php:339 +#: includes/class.cooked-settings.php:301 msgid "div" msgstr "" -#: includes/class.cooked-settings.php:340 +#: includes/class.cooked-settings.php:302 msgid "h2" msgstr "" -#: includes/class.cooked-settings.php:341 +#: includes/class.cooked-settings.php:303 msgid "h3" msgstr "" -#: includes/class.cooked-settings.php:342 +#: includes/class.cooked-settings.php:304 msgid "h4" msgstr "" -#: includes/class.cooked-settings.php:343 +#: includes/class.cooked-settings.php:305 msgid "h5" msgstr "" -#: includes/class.cooked-settings.php:344 +#: includes/class.cooked-settings.php:306 msgid "h6" msgstr "" -#: includes/class.cooked-settings.php:349 +#: includes/class.cooked-settings.php:311 msgid "WP Editor Roles" msgstr "" -#: includes/class.cooked-settings.php:350 +#: includes/class.cooked-settings.php:312 msgid "Choose which user roles can use the WP Editor for the Excerpt, Directions & Notes fields." msgstr "" -#: includes/class.cooked-settings.php:356 +#: includes/class.cooked-settings.php:318 msgid "Advanced Settings" msgstr "" #. translators: an option to only show recipes with the [cooked-recipe] shortcode. -#: includes/class.cooked-settings.php:366 +#: includes/class.cooked-settings.php:328 msgid "Disable Public Recipes" msgstr "" #. translators: an option to only show recipes with the [cooked-recipe] shortcode. -#: includes/class.cooked-settings.php:366 +#: includes/class.cooked-settings.php:328 #, php-format msgid "Only show recipes using the %s shortcode." msgstr "" #. translators: an option to disable "meta" tags. -#: includes/class.cooked-settings.php:368 +#: includes/class.cooked-settings.php:330 #, php-format msgid "Disable %s Tags" msgstr "" #. translators: an option to disable "meta" tags. -#: includes/class.cooked-settings.php:368 +#: includes/class.cooked-settings.php:330 msgid "Prevents duplicates when tags already exist." msgstr "" -#: includes/class.cooked-settings.php:369 +#: includes/class.cooked-settings.php:331 msgid "Disable \"Servings Switcher\"" msgstr "" -#: includes/class.cooked-settings.php:369 +#: includes/class.cooked-settings.php:331 msgid "Removes the servings dropdown on recipes." msgstr "" -#: includes/class.cooked-settings.php:370 +#: includes/class.cooked-settings.php:332 msgid "Disable Recipe Schema Output" msgstr "" -#: includes/class.cooked-settings.php:370 +#: includes/class.cooked-settings.php:332 msgid "You should only do this if you're using something else to output schema information." msgstr "" -#: includes/class.cooked-settings.php:371 +#: includes/class.cooked-settings.php:333 msgid "Disable Recipe Archive Page" msgstr "" -#: includes/class.cooked-settings.php:371 +#: includes/class.cooked-settings.php:333 msgid "Prevents the recipe archive from being displayed." msgstr "" -#: includes/class.cooked-settings.php:378 +#: includes/class.cooked-settings.php:340 msgid "Design" msgstr "" -#: includes/class.cooked-settings.php:382 +#: includes/class.cooked-settings.php:344 msgid "Dark Mode" msgstr "" -#: includes/class.cooked-settings.php:383 +#: includes/class.cooked-settings.php:345 msgid "If your site has a dark background, you should enable \"Dark Mode\" so that Cooked can match this style." msgstr "" -#: includes/class.cooked-settings.php:389 +#: includes/class.cooked-settings.php:351 msgid "Enable \"Dark Mode\"" msgstr "" -#: includes/class.cooked-settings.php:394 +#: includes/class.cooked-settings.php:356 msgid "Author Images" msgstr "" -#: includes/class.cooked-settings.php:395 +#: includes/class.cooked-settings.php:357 msgid "If you do not want to display the author images (avatars), you can disable them here." msgstr "" -#: includes/class.cooked-settings.php:402 +#: includes/class.cooked-settings.php:364 msgid "Hide Author Images" msgstr "" -#: includes/class.cooked-settings.php:407 +#: includes/class.cooked-settings.php:369 msgid "Main Color" msgstr "" -#: includes/class.cooked-settings.php:408 +#: includes/class.cooked-settings.php:370 msgid "Used on buttons, cooking timer, etc." msgstr "" -#: includes/class.cooked-settings.php:414 +#: includes/class.cooked-settings.php:376 msgid "Main Color (on hover)" msgstr "" -#: includes/class.cooked-settings.php:415 +#: includes/class.cooked-settings.php:377 msgid "Used when hovering over buttons." msgstr "" -#: includes/class.cooked-settings.php:421 +#: includes/class.cooked-settings.php:383 msgid "First Responsive Breakpoint" msgstr "" -#: includes/class.cooked-settings.php:422 +#: includes/class.cooked-settings.php:384 msgid "Set the first responsive breakpoint. Best for large tablets." msgstr "" -#: includes/class.cooked-settings.php:428 +#: includes/class.cooked-settings.php:390 msgid "Second Responsive Breakpoint" msgstr "" -#: includes/class.cooked-settings.php:429 +#: includes/class.cooked-settings.php:391 msgid "Set the second responsive breakpoint. Best for small tablets." msgstr "" -#: includes/class.cooked-settings.php:435 +#: includes/class.cooked-settings.php:397 msgid "Third Responsive Breakpoint" msgstr "" -#: includes/class.cooked-settings.php:436 +#: includes/class.cooked-settings.php:398 msgid "Set the third responsive breakpoint. Best for phones and other small devices." msgstr "" -#: includes/class.cooked-settings.php:444 +#: includes/class.cooked-settings.php:406 msgid "Permalinks" msgstr "" -#: includes/class.cooked-settings.php:448 +#: includes/class.cooked-settings.php:410 msgid "Recipe Permalink" msgstr "" -#: includes/class.cooked-settings.php:451 +#: includes/class.cooked-settings.php:413 msgid "recipe-name" msgstr "" -#: includes/class.cooked-settings.php:455 +#: includes/class.cooked-settings.php:417 msgid "Recipe Author Permalink" msgstr "" -#: includes/class.cooked-settings.php:458 +#: includes/class.cooked-settings.php:420 msgid "author-name" msgstr "" -#: includes/class.cooked-settings.php:462 +#: includes/class.cooked-settings.php:424 msgid "Recipe Category Permalink" msgstr "" -#: includes/class.cooked-settings.php:465 +#: includes/class.cooked-settings.php:427 msgid "recipe-category-name" msgstr "" #. translators: posts_per_page default -#: includes/class.cooked-settings.php:476 +#: includes/class.cooked-settings.php:438 #, php-format msgid "WordPress Default %s" msgstr "" -#: includes/class.cooked-settings.php:481 +#: includes/class.cooked-settings.php:443 msgid "Show All (no pagination)" msgstr "" -#: includes/class.cooked-settings.php:625 +#: includes/class.cooked-settings.php:587 msgid "Begin Migration" msgstr "" @@ -1873,7 +1920,7 @@ msgstr "" msgid "(recipe not found or in draft status)" msgstr "" -#: includes/class.cooked-shortcodes.php:650 +#: includes/class.cooked-shortcodes.php:661 msgid "Fullscreen" msgstr "" diff --git a/package-lock.json b/package-lock.json index b643462..9da2a42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cooked", - "version": "1.11.1", + "version": "1.11.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cooked", - "version": "1.11.1", + "version": "1.11.2", "license": "ISC", "devDependencies": { "@playwright/test": "^1.48.2", @@ -100,6 +100,579 @@ "node": ">=10.13.0" } }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.46.1.tgz", + "integrity": "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-connect": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz", + "integrity": "sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/connect": "3.4.38" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-dataloader": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.16.1.tgz", + "integrity": "sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-express": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.47.1.tgz", + "integrity": "sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.19.1.tgz", + "integrity": "sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-generic-pool": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.43.1.tgz", + "integrity": "sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-graphql": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.47.1.tgz", + "integrity": "sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.45.2.tgz", + "integrity": "sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz", + "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/instrumentation": "0.57.2", + "@opentelemetry/semantic-conventions": "1.28.0", + "forwarded-parse": "2.1.2", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-ioredis": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.47.1.tgz", + "integrity": "sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.7.1.tgz", + "integrity": "sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-knex": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.44.1.tgz", + "integrity": "sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.47.1.tgz", + "integrity": "sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.44.1.tgz", + "integrity": "sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongodb": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.52.0.tgz", + "integrity": "sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.46.1.tgz", + "integrity": "sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.45.1.tgz", + "integrity": "sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/mysql": "2.15.26" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql2": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.45.2.tgz", + "integrity": "sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg": { + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.1.tgz", + "integrity": "sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1", + "@types/pg": "8.6.1", + "@types/pg-pool": "2.0.6" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-redis-4": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.46.1.tgz", + "integrity": "sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.18.1.tgz", + "integrity": "sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/tedious": "^4.0.14" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.10.1.tgz", + "integrity": "sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + } + }, + "node_modules/@opentelemetry/redis-common": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", + "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", + "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sql-common": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", + "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0" + } + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -411,9 +984,9 @@ } }, "node_modules/@paulirish/trace_engine": { - "version": "0.0.53", - "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.53.tgz", - "integrity": "sha512-PUl/vlfo08Oj804VI5nDPeSk9vyslnBlVzDDwFt8SUVxY8+KdGMkra/vrXjEEHe8gb7+RqVTfOIlGw0nyrEelA==", + "version": "0.0.59", + "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.59.tgz", + "integrity": "sha512-439NUzQGmH+9Y017/xCchBP9571J4bzhpcNhrxorf7r37wcyJZkgUfrUsRL3xl+JDcZ6ORhoFCzCw98c6S3YHw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -422,13 +995,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.53.0.tgz", - "integrity": "sha512-15hjKreZDcp7t6TL/7jkAo6Df5STZN09jGiv5dbP9A6vMVncXRqE7/B2SncsyOwrkZRBH2i6/TPOL8BVmm3c7w==", + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.1.tgz", + "integrity": "sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.53.0" + "playwright": "1.55.1" }, "bin": { "playwright": "cli.js" @@ -437,19 +1010,32 @@ "node": ">=18" } }, + "node_modules/@prisma/instrumentation": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.11.1.tgz", + "integrity": "sha512-mrZOev24EDhnefmnZX7WVVT7v+r9LttPRqf54ONvj6re4XMF7wFTpK2tLJi4XHB7fFp/6xhYbgRel8YV7gQiyA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.8" + } + }, "node_modules/@puppeteer/browsers": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz", - "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==", + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.10.tgz", + "integrity": "sha512-3ZG500+ZeLql8rE0hjfhkycJjDj0pI/btEh3L9IkWUYcOrgP0xCNRq3HbtbqOPbvDhFaAWD88pDFtlLv8ns8gA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "debug": "^4.4.1", + "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.7.2", - "tar-fs": "^3.0.8", + "tar-fs": "^3.1.0", "yargs": "^17.7.2" }, "bin": { @@ -474,44 +1060,6 @@ "node": ">=12" } }, - "node_modules/@puppeteer/browsers/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@puppeteer/browsers/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@puppeteer/browsers/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -531,106 +1079,181 @@ "node": ">=12" } }, - "node_modules/@sentry-internal/tracing": { - "version": "7.120.3", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz", - "integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==", + "node_modules/@sentry/core": { + "version": "9.46.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.46.0.tgz", + "integrity": "sha512-it7JMFqxVproAgEtbLgCVBYtQ9fIb+Bu0JD+cEplTN/Ukpe6GaolyYib5geZqslVxhp2sQgT+58aGvfd/k0N8Q==", "dev": true, "license": "MIT", - "dependencies": { - "@sentry/core": "7.120.3", - "@sentry/types": "7.120.3", - "@sentry/utils": "7.120.3" + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/node": { + "version": "9.46.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.46.0.tgz", + "integrity": "sha512-pRLqAcd7GTGvN8gex5FtkQR5Mcol8gOy1WlyZZFq4rBbVtMbqKOQRhohwqnb+YrnmtFpj7IZ7KNDo077MvNeOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1", + "@opentelemetry/core": "^1.30.1", + "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation-amqplib": "^0.46.1", + "@opentelemetry/instrumentation-connect": "0.43.1", + "@opentelemetry/instrumentation-dataloader": "0.16.1", + "@opentelemetry/instrumentation-express": "0.47.1", + "@opentelemetry/instrumentation-fs": "0.19.1", + "@opentelemetry/instrumentation-generic-pool": "0.43.1", + "@opentelemetry/instrumentation-graphql": "0.47.1", + "@opentelemetry/instrumentation-hapi": "0.45.2", + "@opentelemetry/instrumentation-http": "0.57.2", + "@opentelemetry/instrumentation-ioredis": "0.47.1", + "@opentelemetry/instrumentation-kafkajs": "0.7.1", + "@opentelemetry/instrumentation-knex": "0.44.1", + "@opentelemetry/instrumentation-koa": "0.47.1", + "@opentelemetry/instrumentation-lru-memoizer": "0.44.1", + "@opentelemetry/instrumentation-mongodb": "0.52.0", + "@opentelemetry/instrumentation-mongoose": "0.46.1", + "@opentelemetry/instrumentation-mysql": "0.45.1", + "@opentelemetry/instrumentation-mysql2": "0.45.2", + "@opentelemetry/instrumentation-pg": "0.51.1", + "@opentelemetry/instrumentation-redis-4": "0.46.1", + "@opentelemetry/instrumentation-tedious": "0.18.1", + "@opentelemetry/instrumentation-undici": "0.10.1", + "@opentelemetry/resources": "^1.30.1", + "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@prisma/instrumentation": "6.11.1", + "@sentry/core": "9.46.0", + "@sentry/node-core": "9.46.0", + "@sentry/opentelemetry": "9.46.0", + "import-in-the-middle": "^1.14.2", + "minimatch": "^9.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@sentry/core": { - "version": "7.120.3", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", - "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", + "node_modules/@sentry/node-core": { + "version": "9.46.0", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-9.46.0.tgz", + "integrity": "sha512-XRVu5pqoklZeh4wqhxCLZkz/ipoKhitctgEFXX9Yh1e1BoHM2pIxT52wf+W6hHM676TFmFXW3uKBjsmRM3AjgA==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.3", - "@sentry/utils": "7.120.3" + "@sentry/core": "9.46.0", + "@sentry/opentelemetry": "9.46.0", + "import-in-the-middle": "^1.14.2" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0", + "@opentelemetry/core": "^1.30.1 || ^2.0.0", + "@opentelemetry/instrumentation": ">=0.57.1 <1", + "@opentelemetry/resources": "^1.30.1 || ^2.0.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0", + "@opentelemetry/semantic-conventions": "^1.34.0" } }, - "node_modules/@sentry/integrations": { - "version": "7.120.3", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz", - "integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==", + "node_modules/@sentry/opentelemetry": { + "version": "9.46.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.46.0.tgz", + "integrity": "sha512-w2zTxqrdmwRok0cXBoh+ksXdGRUHUZhlpfL/H2kfTodOL+Mk8rW72qUmfqQceXoqgbz8UyK8YgJbyt+XS5H4Qg==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "7.120.3", - "@sentry/types": "7.120.3", - "@sentry/utils": "7.120.3", - "localforage": "^1.8.1" + "@sentry/core": "9.46.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0", + "@opentelemetry/core": "^1.30.1 || ^2.0.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0", + "@opentelemetry/semantic-conventions": "^1.34.0" } }, - "node_modules/@sentry/node": { - "version": "7.120.3", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.3.tgz", - "integrity": "sha512-t+QtekZedEfiZjbkRAk1QWJPnJlFBH/ti96tQhEq7wmlk3VszDXraZvLWZA0P2vXyglKzbWRGkT31aD3/kX+5Q==", + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.120.3", - "@sentry/core": "7.120.3", - "@sentry/integrations": "7.120.3", - "@sentry/types": "7.120.3", - "@sentry/utils": "7.120.3" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/@sentry/types": { - "version": "7.120.3", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", - "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==", + "node_modules/@types/mysql": { + "version": "2.15.26", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", + "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@sentry/utils": { - "version": "7.120.3", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", - "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", + "node_modules/@types/node": { + "version": "22.18.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.6.tgz", + "integrity": "sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.3" - }, - "engines": { - "node": ">=8" + "undici-types": "~6.21.0" } }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "node_modules/@types/pg": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", + "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@types/pg-pool": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", + "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/pg": "*" + } + }, + "node_modules/@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", "dev": true, "license": "MIT" }, - "node_modules/@types/node": { - "version": "22.15.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", - "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", + "node_modules/@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "@types/node": "*" } }, "node_modules/@types/yauzl": { @@ -645,9 +1268,9 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.25.0.tgz", - "integrity": "sha512-M1jn4qH9iq1igLZ+sMQYNWp0P1tDgDsXF1iWWdqRn9wWcwHFn7iyDEEZ68uXzNvavkGyIHxZIoBcmKGeUA11/A==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.31.0.tgz", + "integrity": "sha512-iOMZfnYxartxmI/9nnCzPH6LbveFxKdtpT040U4ccTYtN33YiUTPap9pDmwmR+Lc6UC9nIzdfQVmgbFly25q1A==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -666,10 +1289,33 @@ "@playwright/test": ">=1" } }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { @@ -834,6 +1480,16 @@ "dev": true, "license": "MIT" }, + "node_modules/atomically": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.0.3.tgz", + "integrity": "sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==", + "dev": true, + "dependencies": { + "stubborn-fs": "^1.2.5", + "when-exit": "^2.1.1" + } + }, "node_modules/axe-core": { "version": "4.10.3", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", @@ -845,11 +1501,19 @@ } }, "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.2.tgz", + "integrity": "sha512-DyUOdz+E8R6+sruDpQNOaV0y/dBbV6X/8ZkxrDcR0Ifc3BgKlpgG0VAtfOozA0eMtJO5GGe9FsZhueLs00pTww==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } }, "node_modules/bach": { "version": "2.0.1", @@ -866,25 +1530,33 @@ "node": ">=10.13.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz", + "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==", "dev": true, - "license": "Apache-2.0", - "optional": true + "license": "Apache-2.0" }, "node_modules/bare-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", - "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.4.4.tgz", + "integrity": "sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" }, "engines": { "bare": ">=1.16.0" @@ -899,9 +1571,9 @@ } }, "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -921,9 +1593,9 @@ } }, "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", + "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -943,6 +1615,17 @@ } } }, + "node_modules/bare-url": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz", + "integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-path": "^3.0.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -999,6 +1682,16 @@ "readable-stream": "^3.4.0" } }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -1167,9 +1860,9 @@ } }, "node_modules/chromium-bidi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-5.1.0.tgz", - "integrity": "sha512-9MSRhWRVoRPDG0TgzkHrshFSJJNZzfY5UFqUMuksg7zL1yoZIZ3jLB0YAgHclbiAxPI86pBnwDX1tbzoiV8aFw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-9.1.0.tgz", + "integrity": "sha512-rlUzQ4WzIAWdIbY/viPShhZU2n21CxDUgazXVbw4Hu1MwaeUSEksSeM6DqPgpRjCLXRk702AVRxJxoOz0dw4OA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1180,6 +1873,13 @@ "devtools-protocol": "*" } }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, "node_modules/clean-css": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", @@ -1249,21 +1949,22 @@ } }, "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz", + "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "atomically": "^2.0.3", + "dot-prop": "^9.0.0", + "graceful-fs": "^4.2.11", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/constant-case": { @@ -1306,16 +2007,6 @@ "dev": true, "license": "MIT" }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/csp_evaluator": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.5.tgz", @@ -1334,19 +2025,27 @@ } }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true, "license": "MIT" }, @@ -1410,9 +2109,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1467305", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1467305.tgz", - "integrity": "sha512-LxwMLqBoPPGpMdRL4NkLFRNy3QLp6Uqa7GNp1v6JaBheop2QrB9Q7q0A/q/CYYP9sBfZdHOyszVx4gc9zyk7ow==", + "version": "0.0.1507524", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1507524.tgz", + "integrity": "sha512-OjaNE7qpk6GRTXtqQjAE5bGx6+c4F1zZH0YXtpZQLM92HNXx4zMAaqlKhP4T52DosG6hDW8gPMNhGOF8xbwk/w==", "dev": true, "license": "BSD-3-Clause" }, @@ -1428,16 +2127,19 @@ } }, "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz", + "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==", "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "type-fest": "^4.18.2" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dunder-proto": { @@ -1477,9 +2179,9 @@ "license": "MIT" }, "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1628,6 +2330,16 @@ "node": ">=0.10.0" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -1683,31 +2395,6 @@ "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -1835,9 +2522,9 @@ } }, "node_modules/form-data": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", - "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, "license": "MIT", "dependencies": { @@ -1851,6 +2538,13 @@ "node": ">= 6" } }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", + "dev": true, + "license": "MIT" + }, "node_modules/fs-mkdirp-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", @@ -1969,9 +2663,9 @@ } }, "node_modules/get-uri": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", - "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, "license": "MIT", "dependencies": { @@ -1983,31 +2677,6 @@ "node": ">= 14" } }, - "node_modules/get-uri/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/get-uri/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -2193,9 +2862,9 @@ } }, "node_modules/gulp-rename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", - "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.1.0.tgz", + "integrity": "sha512-dGuzuH8jQGqCMqC544IEPhs5+O2l+IkdoSZsgd4kY97M1CxQeI3qrmweQBIrxLBbjbe/8uEWK8HHcNBc3OCy4g==", "dev": true, "license": "MIT", "engines": { @@ -2455,31 +3124,6 @@ "node": ">= 14" } }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -2494,31 +3138,6 @@ "node": ">= 14" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -2560,13 +3179,6 @@ "dev": true, "license": "MIT" }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "license": "MIT" - }, "node_modules/immutable": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", @@ -2574,14 +3186,17 @@ "dev": true, "license": "MIT" }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/import-in-the-middle": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.3.tgz", + "integrity": "sha512-ajmxBgfBxVO9GWzD79xktBvMk2kTrqsXPKV0jg5pcwwcFpuLNSHwcPPvp4cgCQshlWz2ivgu5JiuRgDh+2ixGQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" } }, "node_modules/inherits": { @@ -2622,15 +3237,11 @@ } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "dev": true, "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { "node": ">= 12" } @@ -2773,16 +3384,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -2802,16 +3403,9 @@ "dependencies": { "is-unc-path": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-unc-path": { "version": "1.0.0", @@ -2900,13 +3494,6 @@ "node": ">=12" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, - "license": "MIT" - }, "node_modules/last-run": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", @@ -2934,16 +3521,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, "node_modules/liftoff": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.1.tgz", @@ -2964,37 +3541,36 @@ } }, "node_modules/lighthouse": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.6.1.tgz", - "integrity": "sha512-85WDkjcXAVdlFem9Y6SSxqoKiz/89UsDZhLpeLJIsJ4LlHxw047XTZhlFJmjYCB7K5S1erSBAf5cYLcfyNbH3A==", + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.8.2.tgz", + "integrity": "sha512-+5SKYzVaTFj22MgoYDPNrP9tlD2/Ay7j3SxPSFD9FpPyVxGr4UtOQGKyrdZ7wCmcnBaFk0mCkPfARU3CsE0nvA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@paulirish/trace_engine": "0.0.53", - "@sentry/node": "^7.0.0", + "@paulirish/trace_engine": "0.0.59", + "@sentry/node": "^9.28.1", "axe-core": "^4.10.3", "chrome-launcher": "^1.2.0", - "configstore": "^5.0.1", + "configstore": "^7.0.0", "csp_evaluator": "1.1.5", - "devtools-protocol": "0.0.1467305", + "devtools-protocol": "0.0.1507524", "enquirer": "^2.3.6", "http-link-header": "^1.1.1", "intl-messageformat": "^10.5.3", "jpeg-js": "^0.4.4", "js-library-detector": "^6.7.0", - "lighthouse-logger": "^2.0.1", + "lighthouse-logger": "^2.0.2", "lighthouse-stack-packs": "1.12.2", "lodash-es": "^4.17.21", "lookup-closest-locale": "6.2.0", "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", - "puppeteer-core": "^24.10.0", + "puppeteer-core": "^24.17.1", "robots-parser": "^3.0.1", - "semver": "^5.3.0", "speedline-core": "^1.4.3", - "third-party-web": "^0.26.6", - "tldts-icann": "^6.1.16", + "third-party-web": "^0.27.0", + "tldts-icann": "^7.0.12", "ws": "^7.0.0", "yargs": "^17.3.1", "yargs-parser": "^21.0.0" @@ -3005,17 +3581,17 @@ "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js" }, "engines": { - "node": ">=18.20" + "node": ">=18.16" } }, "node_modules/lighthouse-logger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.1.tgz", - "integrity": "sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.2.tgz", + "integrity": "sha512-vWl2+u5jgOQuZR55Z1WM0XDdrJT6mzMP8zHUct7xTlWhuQs+eV0g+QL0RQdFjT54zVmbhLCP8vIVpy1wGn/gCg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "debug": "^2.6.9", + "debug": "^4.4.1", "marky": "^1.2.2" } }, @@ -3060,16 +3636,6 @@ "node": ">=12" } }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "lie": "3.1.1" - } - }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", @@ -3111,32 +3677,6 @@ "node": ">=12" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -3238,6 +3778,22 @@ "node": ">= 0.6" } }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", @@ -3245,10 +3801,17 @@ "dev": true, "license": "MIT" }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "dev": true, + "license": "MIT" + }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, @@ -3391,31 +3954,6 @@ "node": ">= 14" } }, - "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pac-proxy-agent/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/pac-resolver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", @@ -3531,6 +4069,40 @@ "dev": true, "license": "MIT" }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -3552,13 +4124,13 @@ } }, "node_modules/playwright": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.53.0.tgz", - "integrity": "sha512-ghGNnIEYZC4E+YtclRn4/p6oYbdPiASELBIYkBXfaTVKreQUYbMUYQDwS12a8F0/HtIjr/CkGjtwABeFPGcS4Q==", + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.1.tgz", + "integrity": "sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.53.0" + "playwright-core": "1.55.1" }, "bin": { "playwright": "cli.js" @@ -3571,9 +4143,9 @@ } }, "node_modules/playwright-core": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.53.0.tgz", - "integrity": "sha512-mGLg8m0pm4+mmtB7M89Xw/GSqoNC+twivl8ITteqvAndachozYe2ZA7srU6uleV1vEdAHYqjq+SV8SNxRRFYBw==", + "version": "1.55.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.1.tgz", + "integrity": "sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3627,6 +4199,49 @@ "node": ">=0.10.0" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -3664,31 +4279,6 @@ "node": ">= 14" } }, - "node_modules/proxy-agent/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/proxy-agent/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -3697,9 +4287,9 @@ "license": "MIT" }, "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, "license": "MIT", "dependencies": { @@ -3708,59 +4298,35 @@ } }, "node_modules/puppeteer-core": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.10.1.tgz", - "integrity": "sha512-AE6doA9znmEEps/pC5lc9p0zejCdNLR6UBp3EZ49/15Nbvh+uklXxGox7Qh8/lFGqGVwxInl0TXmsOmIuIMwiQ==", + "version": "24.22.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.22.3.tgz", + "integrity": "sha512-M/Jhg4PWRANSbL/C9im//Yb55wsWBS5wdp+h59iwM+EPicVQQCNs56iC5aEAO7avfDPRfxs4MM16wHjOYHNJEw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.10.5", - "chromium-bidi": "5.1.0", - "debug": "^4.4.1", - "devtools-protocol": "0.0.1452169", + "@puppeteer/browsers": "2.10.10", + "chromium-bidi": "9.1.0", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1495869", "typed-query-selector": "^2.12.0", - "ws": "^8.18.2" + "webdriver-bidi-protocol": "0.2.11", + "ws": "^8.18.3" }, "engines": { "node": ">=18" } }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.1452169", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1452169.tgz", - "integrity": "sha512-FOFDVMGrAUNp0dDKsAU1TorWJUx2JOU1k9xdgBKKJF3IBh/Uhl2yswG5r3TEAOrCiGY2QRp1e6LVDQrCsTKO4g==", + "version": "0.0.1495869", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1495869.tgz", + "integrity": "sha512-i+bkd9UYFis40RcnkW7XrOprCujXRAHg62IVh/Ah3G8MmNXpCGt1m0dTFhSdx/AVs8XEMbdOGRwdkR1Bcta8AA==", "dev": true, "license": "BSD-3-Clause" }, - "node_modules/puppeteer-core/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "license": "MIT", "engines": { @@ -3857,6 +4423,21 @@ "node": ">=0.10.0" } }, + "node_modules/require-in-the-middle": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -3955,9 +4536,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.89.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", - "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz", + "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", "dev": true, "license": "MIT", "dependencies": { @@ -4006,13 +4587,16 @@ } }, "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver-greatest-satisfied-range": { @@ -4040,12 +4624,12 @@ "upper-case-first": "^2.0.2" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", "dev": true, - "license": "ISC" + "license": "BSD-2-Clause" }, "node_modules/smart-buffer": { "version": "4.2.0", @@ -4070,13 +4654,13 @@ } }, "node_modules/socks": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", - "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -4099,31 +4683,6 @@ "node": ">= 14" } }, - "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socks-proxy-agent/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4169,13 +4728,6 @@ "node": ">=8.0" } }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/stream-composer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", @@ -4194,17 +4746,15 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "dev": true, "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -4245,6 +4795,12 @@ "node": ">=8" } }, + "node_modules/stubborn-fs": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz", + "integrity": "sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==", + "dev": true + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4293,9 +4849,9 @@ } }, "node_modules/tar-fs": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz", - "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "dev": true, "license": "MIT", "dependencies": { @@ -4340,9 +4896,9 @@ } }, "node_modules/third-party-web": { - "version": "0.26.6", - "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.26.6.tgz", - "integrity": "sha512-GsjP92xycMK8qLTcQCacgzvffYzEqe29wyz3zdKVXlfRD5Kz1NatCTOZEeDaSd6uCZXvGd2CNVtQ89RNIhJWvA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.27.0.tgz", + "integrity": "sha512-h0JYX+dO2Zr3abCQpS6/uFjujaOjA1DyDzGQ41+oFn9VW/ARiq9g5ln7qEP9+BTzDpOMyIfsfj4OvfgXAsMUSA==", "dev": true, "license": "MIT" }, @@ -4357,20 +4913,20 @@ } }, "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "version": "7.0.16", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.16.tgz", + "integrity": "sha512-XHhPmHxphLi+LGbH0G/O7dmUH9V65OY20R7vH8gETHsp5AZCjBk9l8sqmRKLaGOxnETU7XNSDUPtewAy/K6jbA==", "dev": true, "license": "MIT" }, "node_modules/tldts-icann": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-6.1.86.tgz", - "integrity": "sha512-NFxmRT2lAEMcCOBgeZ0NuM0zsK/xgmNajnY6n4S1mwAKocft2s2ise1O3nQxrH3c+uY6hgHUV9GGNVp7tUE4Sg==", + "version": "7.0.16", + "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.16.tgz", + "integrity": "sha512-WS/pPasPs2cx6orcxCcIz01SlG3dwYlgjLAnQt7vLAusTuTLqdI8zmkqbM8TWYEf3Z0o1S4BzM3oSRFPk/6WnA==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.86" + "tldts-core": "^7.0.16" } }, "node_modules/to-regex-range": { @@ -4406,6 +4962,19 @@ "dev": true, "license": "0BSD" }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-query-selector": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", @@ -4413,16 +4982,6 @@ "dev": true, "license": "MIT" }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -4479,19 +5038,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/upper-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", @@ -4640,6 +5186,20 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/webdriver-bidi-protocol": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.2.11.tgz", + "integrity": "sha512-Y9E1/oi4XMxcR8AT0ZC4OvYntl34SPgwjmELH+owjBr0korAX4jKgZULBWILGCVGdVCQ0dodTToIETozhG8zvA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/when-exit": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.4.tgz", + "integrity": "sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==", + "dev": true, + "license": "MIT" + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -4678,19 +5238,6 @@ "dev": true, "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", @@ -4714,13 +5261,16 @@ } }, "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xtend": { @@ -4794,9 +5344,9 @@ } }, "node_modules/zod": { - "version": "3.25.64", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.64.tgz", - "integrity": "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index 1e46b6a..e892d1d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cooked", - "version": "1.11.1", + "version": "1.11.2", "description": "Cooked is the absolute best way to create & display recipes with WordPress. SEO optimized (rich snippets), galleries, cooking timers, printable recipes and much more.", "main": "index.js", "scripts": { diff --git a/readme.txt b/readme.txt index ca871ba..2cf673b 100644 --- a/readme.txt +++ b/readme.txt @@ -2,8 +2,8 @@ Contributors: xjsv, boxystudio Tags: recipe, recipes, food, cooking, nutrition Requires at least: 4.7 -Tested up to: 6.8.1 -Stable tag: 1.11.1 +Tested up to: 6.8.2 +Stable tag: 1.11.2 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -76,10 +76,22 @@ Be sure to check the [Cooked Documentation](https://github.com/XjSv/Cooked/wiki) == Upgrade Notice == -Version 1.11.1 includes a bug fix for the first time installation and activation of the plugin and a bug fix for the WordPress Importer. +Version 1.11.2 includes a new import for WP Recipe Maker recipes, transient message handling for guests to support guest recipe submissions, and developer hooks: `cooked_info_shortcode_output` filter and `cooked_ingredients_shortcode_before`/`cooked_ingredients_shortcode_after` actions for enhanced customization. == Changelog == += 1.11.2 = +* **NEW:** Added import for WP Recipe Maker recipes. +* **TWEAK:** Improved author permalink generation and rewrite rules for recipe authors. +* **TWEAK:** Added transient message handling for guests to support guest recipe submissions. +* **NEW:** Added developer hooks: `cooked_info_shortcode_output` filter and `cooked_ingredients_shortcode_before`/`cooked_ingredients_shortcode_after` actions for enhanced customization. +* **TWEAK:** Enhanced admin notices and settings descriptions to clarify required setup. +* **TWEAK:** Refactored update logic and version tracking. +* **TWEAK:** Updated version to 1.11.2 across metadata files. +* **TWEAK:** Also updates translations and documentation. +* **TWEAK:** Fixed bug with formatting of the post title when submitting a recipe from the front end in other languages (submit a recipe shortcode). +* **TWEAK:** Various code style and logic improvements for reliability and maintainability. + = 1.11.1 = * **FIX:** Fixed a bug when installing and activating the plugin for the first time. * **FIX:** Fixed a bug when exporting and importing recipes using the WordPress Importer. diff --git a/templates/admin/import.php b/templates/admin/import.php index 20aaf86..44585fe 100644 --- a/templates/admin/import.php +++ b/templates/admin/import.php @@ -1,126 +1,125 @@ -
+
+
+
- - -
-    -
-
tabs_fields(); - - $tab_counter = 1; - echo ''; +
+    +
+
+ global $_cooked_settings; - + $Cooked_Import = new Cooked_Import(); + $cooked_settings_tabs_fields = $Cooked_Import->tabs_fields(); -
+ $tab_counter = 1; + echo ''; + ?> - + - +
+ -
- - foreach ( $cooked_settings_tabs_fields as $tab_slug => $tab ): - echo '
'; +
+ '; endif; - foreach ( $tab['fields'] as $name => $field ): - $notitle = false; - $conditional_requirement = ''; + foreach ( $cooked_settings_tabs_fields as $tab_slug => $tab ): + echo '
'; - $class = ( isset($field['class']) ? ' ' . $field['class'] : '' ); - $current_val = ( isset($_cooked_settings[$name]) ? $_cooked_settings[$name] : null ); - $field_type = 'field_' . esc_attr( $field['type'] ); - $field_options = ( isset($field['options']) ? $field['options'] : false ); - $field_options = ( !$field_options ? ( isset($field['placeholder']) ? $field['placeholder'] : $field_options ) : $field_options ); - $color = ( isset($field['color']) && $field['color'] ? $field['color'] : false ); + // Add a hidden H2 tag for the messages, if any, to show up below it. + if ($tab_counter == 1): echo '

'; endif; + foreach ( $tab['fields'] as $name => $field ): + $notitle = false; + $conditional_requirement = ''; - if ( method_exists ( $Cooked_Import, $field_type ) ): + $class = isset($field['class']) ? ' ' . $field['class'] : ''; + $current_val = isset($_cooked_settings[$name]) ? $_cooked_settings[$name] : null; + $field_type = 'field_' . esc_attr( $field['type'] ); + $field_options = isset($field['options']) ? $field['options'] : false; + $field_options = !$field_options ? ( isset($field['placeholder']) ? $field['placeholder'] : $field_options ) : $field_options; + $color = isset($field['color']) && $field['color'] ? $field['color'] : false; - if ( $field['type'] == 'misc_button' || $field['type'] == 'nonce' ): - $notitle = true; - $field_options = ( isset($field['title']) ? $field['title'] : false ); - endif; + if ( method_exists ( $Cooked_Import, $field_type ) ): - if ( isset($field['conditional_requirement']) && $field['conditional_requirement'] ): - if ( is_array($field['conditional_requirement']) ): - $conditional_requirement = ' v-show="' . implode( ' && ', $field['conditional_requirement'] ) . '"'; - else: - $conditional_requirement = ' v-show="' . esc_attr($field['conditional_requirement']) . '"'; + if ( $field['type'] == 'misc_button' || $field['type'] == 'nonce' ): + $notitle = true; + $field_options = isset($field['title']) ? $field['title'] : false; endif; - endif; - echo ( $conditional_requirement ? '' : '' ); - echo ''; - echo ( !$notitle ? '

' . wp_kses_post( $field['title'] ) . '

' : '' ); - echo ( isset($field['desc']) && $field['desc'] ? '

' . wp_kses_post( $field['desc'] ). '

' : '' ); - $Cooked_Import->$field_type( $name, $field_options, $color, $field ); - echo '
'; - echo ( $conditional_requirement ? '' : '' ); + if ( isset($field['conditional_requirement']) && $field['conditional_requirement'] ): + if ( is_array($field['conditional_requirement']) ): + $conditional_requirement = ' v-show="' . implode( ' && ', $field['conditional_requirement'] ) . '"'; + else: + $conditional_requirement = ' v-show="' . esc_attr($field['conditional_requirement']) . '"'; + endif; + endif; - endif; + echo $conditional_requirement ? '' : ''; + echo ''; + echo !$notitle ? '

' . wp_kses_post( $field['title'] ) . '

' : ''; + echo isset($field['desc']) && $field['desc'] ? '

' . wp_kses_post( $field['desc'] ). '

' : ''; + $Cooked_Import->$field_type( $name, $field_options, $color, $field ); + echo '
'; + echo $conditional_requirement ? '' : ''; - endforeach; - $tab_counter++; + endif; - echo '
'; - endforeach; ?> + endforeach; + $tab_counter++; -
+ echo '
'; + endforeach; ?> -
+
- +
-
- if ( !empty($conditions) ): +
$array ): - foreach( $array as $name => $true_val ): - $val = ( isset( $_cooked_settings[$setting_name] ) && is_array( $_cooked_settings[$setting_name] ) && in_array( $true_val, $_cooked_settings[$setting_name] ) ? 'true' : 'false' ); - $conditional_requirements_js[] = "'$name':$val"; - endforeach; - endforeach; ?> + if ( !empty($conditions) ): - + foreach( $conditions as $setting_name => $array ): + foreach( $array as $name => $true_val ): + $val = isset( $_cooked_settings[$setting_name] ) && is_array( $_cooked_settings[$setting_name] ) && in_array( $true_val, $_cooked_settings[$setting_name] ) ? 'true' : 'false'; + $conditional_requirements_js[] = "'$name':$val"; + endforeach; + endforeach; ?> - + var vm = new Vue({ + el: '#cooked-settings-panel', + data: { + + } + }); + - endif; + + endif; -
\ No newline at end of file + ?> + + \ No newline at end of file diff --git a/templates/admin/welcome.php b/templates/admin/welcome.php index 34bf910..48d1393 100644 --- a/templates/admin/welcome.php +++ b/templates/admin/welcome.php @@ -16,7 +16,7 @@ __('If this is your first time using %1$s, head over to the %2$s page for some initial configuration. You can also check out the %3$s if you get stuck or contact me on %4$s. If you just recently updated, you can find out what\'s new below.', 'cooked'), 'Cooked', '' . __( 'Settings', 'cooked' ) . '', - '' . __( 'documentation', 'cooked' ) . '' , + '' . __( 'documentation', 'cooked' ) . '' , '' . __( 'Discord', 'cooked' ) . '' ) ); @@ -28,7 +28,7 @@

    -
  •   
  • +
  •   
  •   
  •   
  •   
  • diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 42efe1b..44986d5 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,8 +1,8 @@ array( 'name' => 'xjsv/cooked', - 'pretty_version' => '1.11.1', - 'version' => '1.11.1.0', + 'pretty_version' => '1.11.2', + 'version' => '1.11.2.0', 'reference' => null, 'type' => 'wordpress-plugin', 'install_path' => __DIR__ . '/../../', @@ -20,8 +20,8 @@ 'dev_requirement' => false, ), 'xjsv/cooked' => array( - 'pretty_version' => '1.11.1', - 'version' => '1.11.1.0', + 'pretty_version' => '1.11.2', + 'version' => '1.11.2.0', 'reference' => null, 'type' => 'wordpress-plugin', 'install_path' => __DIR__ . '/../../', diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index 580fa96..d2225c7 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -19,8 +19,7 @@ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; } } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR + throw new \RuntimeException( + 'Composer detected issues in your platform: ' . implode(' ', $issues) ); }