From d7452a4aab29dd90905719c4a5803e305f5eec82 Mon Sep 17 00:00:00 2001 From: Euzebio Batista Date: Thu, 26 Sep 2024 20:02:12 +0000 Subject: [PATCH 1/4] fix: new option to pay in plugin-script --- .devcontainer/devcontainer-example.json | 188 +- .eslintrc.js | 22 +- .gitignore | 9 +- .vscode/.php-cs-fixer.php | 204 +- Admin/LknmpGatewayGiveWPAdmin.php | 340 +- Admin/css/lknmp-gateway-givewp-admin.css | 6 +- Admin/js/lknmp-gateway-givewp-show-message.js | 58 +- CHANGELOG.md | 42 +- Includes/LknmpGatewayGiveWP.php | 640 +- Includes/LknmpGatewayGiveWPActivator.php | 70 +- Includes/LknmpGatewayGiveWPDeactivator.php | 70 +- Includes/LknmpGatewayGiveWPLoader.php | 244 +- Includes/LknmpGatewayGiveWPi18n.php | 82 +- Includes/index.php | 6 +- Public/LknmpGatewayGiveWPPublic.php | 250 +- Public/css/lknmp-gateway-givewp-public.css | 6 +- Public/js/MercadoPago.js | 8 +- Public/js/lknmp-gateway-givewp-public.js | 11 +- Public/js/plugin-script.js | 771 +-- Public/js/plugin-script.tsx | 412 +- ...-mercadopago-for-givewp-public-display.php | 32 +- README.txt | 216 +- composer.json | 44 +- composer.lock | 3502 +++++------ .../lknmp-mercadopago-for-givewp-pt_BR.po | 148 +- languages/lknmp-mercadopago-for-givewp.pot | 148 +- lknmp-gateway-givewp.php | 208 +- package-lock.json | 5446 ++++++++--------- package.json | 48 +- uninstall.php | 104 +- 30 files changed, 6675 insertions(+), 6660 deletions(-) diff --git a/.devcontainer/devcontainer-example.json b/.devcontainer/devcontainer-example.json index 07b8c13..546cbc1 100755 --- a/.devcontainer/devcontainer-example.json +++ b/.devcontainer/devcontainer-example.json @@ -1,94 +1,94 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -{ - "name": "PHP", - // https: //github.com/devcontainers/images/tree/main/src/php - "image": "mcr.microsoft.com/vscode/devcontainers/php:8.1", - "features": { - // https://github.com/devcontainers/features/tree/main/src/node - "ghcr.io/devcontainers/features/node:1": { - "version": "18.14.0", - "nvmVersion": "0.39.3" - } - }, - "mounts": [ - { - "source": "/home/{yourusername}/projects/wordpress", - "target": "/home/vscode/_wordpress", - "type": "bind" - } - ], - "postCreateCommand": "npm install", - "customizations": { - "vscode": { - "extensions": [ - "junstyle.php-cs-fixer", - "bmewburn.vscode-intelephense-client", - "neilbrayfield.php-docblocker", - "dbaeumer.vscode-eslint", - "jkiviluoto.tws", - "lacroixdavid1.vscode-format-context-menu", - "Gruntfuggly.todo-tree", - "Natizyskunk.sftp" - ], - "settings": { - "[html]": { - "editor.rulers": [ - 120 - ], - "editor.tabSize": 4 - }, - "[javascript]": { - "editor.rulers": [ - 80, - 120 - ] - }, - "[php]": { - "editor.defaultFormatter": "junstyle.php-cs-fixer", - "editor.rulers": [ - 80, - 120 - ] - }, - "[smarty]": { - "editor.rulers": [ - 120 - ], - "editor.tabSize": 4, - "editor.wrappingIndent": "deepIndent", - "editor.wrappingStrategy": "advanced" - }, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - }, - "editor.formatOnSave": true, - "files.encoding": "utf8", - "files.eol": "\n", - "html.format.wrapAttributes": "force-expand-multiline", - "html.format.wrapAttributesIndentSize": 4, - "html.format.wrapLineLength": 120, - "intelephense.environment.documentRoot": "src", - "intelephense.environment.phpVersion": "8.1", - "intelephense.files.associations": [ - "*.php" - ], - "namespaceResolver.showMessageOnStatusBar": true, - "namespaceResolver.sortAlphabetically": true, - "namespaceResolver.sortNatural": true, - "namespaceResolver.sortOnSave": true, - "php-cs-fixer.autoFixByBracket": true, - "php-cs-fixer.autoFixBySemicolon": true, - "php-cs-fixer.config": ".php-cs-fixer.php", - "php-cs-fixer.executablePath": "${extensionPath}/php-cs-fixer.phar", - "php-cs-fixer.formatHtml": true, - "php-cs-fixer.onsave": true, - "php-docblocker.alignParams": true, - "php-docblocker.alignReturn": true, - "php-docblocker.useShortNames": true, - "php.suggest.basic": false, - "php.validate.enable": false, - "smarty.highlight": true - } - } - } -} +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +{ + "name": "PHP", + // https: //github.com/devcontainers/images/tree/main/src/php + "image": "mcr.microsoft.com/vscode/devcontainers/php:8.1", + "features": { + // https://github.com/devcontainers/features/tree/main/src/node + "ghcr.io/devcontainers/features/node:1": { + "version": "18.14.0", + "nvmVersion": "0.39.3" + } + }, + "mounts": [ + { + "source": "/home/{yourusername}/projects/wordpress", + "target": "/home/vscode/_wordpress", + "type": "bind" + } + ], + "postCreateCommand": "npm install", + "customizations": { + "vscode": { + "extensions": [ + "junstyle.php-cs-fixer", + "bmewburn.vscode-intelephense-client", + "neilbrayfield.php-docblocker", + "dbaeumer.vscode-eslint", + "jkiviluoto.tws", + "lacroixdavid1.vscode-format-context-menu", + "Gruntfuggly.todo-tree", + "Natizyskunk.sftp" + ], + "settings": { + "[html]": { + "editor.rulers": [ + 120 + ], + "editor.tabSize": 4 + }, + "[javascript]": { + "editor.rulers": [ + 80, + 120 + ] + }, + "[php]": { + "editor.defaultFormatter": "junstyle.php-cs-fixer", + "editor.rulers": [ + 80, + 120 + ] + }, + "[smarty]": { + "editor.rulers": [ + 120 + ], + "editor.tabSize": 4, + "editor.wrappingIndent": "deepIndent", + "editor.wrappingStrategy": "advanced" + }, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "editor.formatOnSave": true, + "files.encoding": "utf8", + "files.eol": "\n", + "html.format.wrapAttributes": "force-expand-multiline", + "html.format.wrapAttributesIndentSize": 4, + "html.format.wrapLineLength": 120, + "intelephense.environment.documentRoot": "src", + "intelephense.environment.phpVersion": "8.1", + "intelephense.files.associations": [ + "*.php" + ], + "namespaceResolver.showMessageOnStatusBar": true, + "namespaceResolver.sortAlphabetically": true, + "namespaceResolver.sortNatural": true, + "namespaceResolver.sortOnSave": true, + "php-cs-fixer.autoFixByBracket": true, + "php-cs-fixer.autoFixBySemicolon": true, + "php-cs-fixer.config": ".php-cs-fixer.php", + "php-cs-fixer.executablePath": "${extensionPath}/php-cs-fixer.phar", + "php-cs-fixer.formatHtml": true, + "php-cs-fixer.onsave": true, + "php-docblocker.alignParams": true, + "php-docblocker.alignReturn": true, + "php-docblocker.useShortNames": true, + "php.suggest.basic": false, + "php.validate.enable": false, + "smarty.highlight": true + } + } + } +} diff --git a/.eslintrc.js b/.eslintrc.js index 1fbb5dc..46c9497 100755 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,11 +1,11 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": "standard", - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - } -} +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": "standard", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + } +} diff --git a/.gitignore b/.gitignore index c589057..6d45be0 100755 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -node_modules -.vscode/settings.json -vendor -.devcontainer/devcontainer.json \ No newline at end of file +node_modules +.vscode/settings.json +vendor +.devcontainer/devcontainer.json +.vscode/functions \ No newline at end of file diff --git a/.vscode/.php-cs-fixer.php b/.vscode/.php-cs-fixer.php index f1eec9b..39af845 100755 --- a/.vscode/.php-cs-fixer.php +++ b/.vscode/.php-cs-fixer.php @@ -1,102 +1,102 @@ -setRules(array( - 'short_scalar_cast' => true, - 'visibility_required' => true, - 'elseif' => true, - 'no_superfluous_elseif' => true, - 'align_multiline_comment' => array('comment_type' => 'phpdocs_like'), - 'array_syntax' => array('syntax' => 'long'), - 'binary_operator_spaces' => true, - 'blank_line_after_opening_tag' => false, - 'braces' => array( - 'position_after_functions_and_oop_constructs' => 'same', - ), - 'cast_spaces' => true, - 'class_attributes_separation' => array( - 'elements' => array( - 'const' => 'one', - 'method' => 'one', - 'property' => 'only_if_meta', - ), - ), - 'class_definition' => array('single_line' => true), - 'class_keyword_remove' => true, - 'concat_space' => array('spacing' => 'one'), - 'control_structure_continuation_position' => true, - 'dir_constant' => true, - 'fully_qualified_strict_types' => true, - 'global_namespace_import' => false, - 'include' => true, - 'list_syntax' => array('syntax' => 'long'), - 'lowercase_cast' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'magic_method_casing' => true, - 'method_chaining_indentation' => true, - 'native_constant_invocation' => true, - 'native_function_casing' => true, - 'native_function_type_declaration_casing' => true, - 'new_with_braces' => true, - 'no_alternative_syntax' => array('fix_non_monolithic_code' => false), - 'no_blank_lines_after_class_opening' => false, - 'no_blank_lines_after_phpdoc' => true, - 'no_empty_comment' => true, - 'no_extra_blank_lines' => array( - 'tokens' => array( - 'continue', - 'extra', - 'parenthesis_brace_block', - 'square_brace_block', - 'throw', - 'use', - ), - ), - 'no_spaces_around_offset' => array('positions' => array('outside')), - 'no_spaces_inside_parenthesis' => false, - 'not_operator_with_space' => true, - // 'not_operator_with_successor_space' => true, - 'phpdoc_tag_casing' => true, - 'phpdoc_types_order' => array( - 'null_adjustment' => 'always_last', - 'sort_algorithm' => 'none', - ), - 'single_line_throw' => true, - 'strict_param' => true, - 'trim_array_spaces' => true, - // WPCS 3.0 proposal, yoda style is optional - 'yoda_style' => array( - 'always_move_variable' => true, - 'equal' => true, - 'identical' => true, - 'always_move_variable' => true, - ), - 'modernize_types_casting' => true, - 'final_class' => true, - 'final_internal_class' => true, - 'final_public_method_for_abstract_class' => true, - 'void_return' => true, - 'logical_operators' => true, - 'array_indentation' => true, - 'whitespace_after_comma_in_array' => array( - 'ensure_single_space' => true, - ), - 'method_argument_space' => array( - 'keep_multiple_spaces_after_comma' => false, - 'on_multiline' => 'ensure_fully_multiline', - ), - 'native_function_invocation' => false, - 'native_constant_invocation' => false - )) - ->setIndent(' ') - ->setLineEnding("\n") - ->setRiskyAllowed(true) -; +setRules(array( + 'short_scalar_cast' => true, + 'visibility_required' => true, + 'elseif' => true, + 'no_superfluous_elseif' => true, + 'align_multiline_comment' => array('comment_type' => 'phpdocs_like'), + 'array_syntax' => array('syntax' => 'long'), + 'binary_operator_spaces' => true, + 'blank_line_after_opening_tag' => false, + 'braces' => array( + 'position_after_functions_and_oop_constructs' => 'same', + ), + 'cast_spaces' => true, + 'class_attributes_separation' => array( + 'elements' => array( + 'const' => 'one', + 'method' => 'one', + 'property' => 'only_if_meta', + ), + ), + 'class_definition' => array('single_line' => true), + 'class_keyword_remove' => true, + 'concat_space' => array('spacing' => 'one'), + 'control_structure_continuation_position' => true, + 'dir_constant' => true, + 'fully_qualified_strict_types' => true, + 'global_namespace_import' => false, + 'include' => true, + 'list_syntax' => array('syntax' => 'long'), + 'lowercase_cast' => true, + 'lowercase_static_reference' => true, + 'magic_constant_casing' => true, + 'magic_method_casing' => true, + 'method_chaining_indentation' => true, + 'native_constant_invocation' => true, + 'native_function_casing' => true, + 'native_function_type_declaration_casing' => true, + 'new_with_braces' => true, + 'no_alternative_syntax' => array('fix_non_monolithic_code' => false), + 'no_blank_lines_after_class_opening' => false, + 'no_blank_lines_after_phpdoc' => true, + 'no_empty_comment' => true, + 'no_extra_blank_lines' => array( + 'tokens' => array( + 'continue', + 'extra', + 'parenthesis_brace_block', + 'square_brace_block', + 'throw', + 'use', + ), + ), + 'no_spaces_around_offset' => array('positions' => array('outside')), + 'no_spaces_inside_parenthesis' => false, + 'not_operator_with_space' => true, + // 'not_operator_with_successor_space' => true, + 'phpdoc_tag_casing' => true, + 'phpdoc_types_order' => array( + 'null_adjustment' => 'always_last', + 'sort_algorithm' => 'none', + ), + 'single_line_throw' => true, + 'strict_param' => true, + 'trim_array_spaces' => true, + // WPCS 3.0 proposal, yoda style is optional + 'yoda_style' => array( + 'always_move_variable' => true, + 'equal' => true, + 'identical' => true, + 'always_move_variable' => true, + ), + 'modernize_types_casting' => true, + 'final_class' => true, + 'final_internal_class' => true, + 'final_public_method_for_abstract_class' => true, + 'void_return' => true, + 'logical_operators' => true, + 'array_indentation' => true, + 'whitespace_after_comma_in_array' => array( + 'ensure_single_space' => true, + ), + 'method_argument_space' => array( + 'keep_multiple_spaces_after_comma' => false, + 'on_multiline' => 'ensure_fully_multiline', + ), + 'native_function_invocation' => false, + 'native_constant_invocation' => false + )) + ->setIndent(' ') + ->setLineEnding("\n") + ->setRiskyAllowed(true) +; diff --git a/Admin/LknmpGatewayGiveWPAdmin.php b/Admin/LknmpGatewayGiveWPAdmin.php index ab75a3b..db16934 100755 --- a/Admin/LknmpGatewayGiveWPAdmin.php +++ b/Admin/LknmpGatewayGiveWPAdmin.php @@ -1,170 +1,170 @@ - - */ -final class LknmpGatewayGiveWPAdmin { - /** - * The ID of this plugin. - * - * @since 1.0.0 - * @access private - * @var string $plugin_name The ID of this plugin. - */ - private $plugin_name; - - /** - * The version of this plugin. - * - * @since 1.0.0 - * @access private - * @var string $version The current version of this plugin. - */ - private $version; - - /** - * Initialize the class and set its properties. - * - * @since 1.0.0 - * @param string $plugin_name The name of this plugin. - * @param string $version The version of this plugin. - */ - public function __construct( $plugin_name, $version ) { - $this->plugin_name = $plugin_name; - $this->version = $version; - } - - /** - * Register the stylesheets for the admin area. - * - * @since 1.0.0 - */ - public function enqueue_styles(): void { - /** - * This function is provided for demonstration purposes only. - * - * An instance of this class should be passed to the run() function - * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined - * in that particular class. - * - * The Lknmp_Gateway_Givewp_Loader will then create the relationship - * between the defined hooks and the functions defined in this - * class. - */ - wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/lknmp-gateway-givewp-admin.css', array(), $this->version, 'all' ); - } - - /** - * Register the JavaScript for the admin area. - * - * @since 1.0.0 - */ - public function enqueue_scripts($hook): void { - /** - * This function is provided for demonstration purposes only. - * - * An instance of this class should be passed to the run() function - * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined - * in that particular class. - * - * The Lknmp_Gateway_Givewp_Loader will then create the relationship - * between the defined hooks and the functions defined in this - * class. - */ - wp_enqueue_script("lkn-mercadopago-givewp-show-message.js", plugin_dir_url(__FILE__) . 'js/lknmp-gateway-givewp-show-message.js', null, $this->version, false ); - - wp_localize_script("lkn-mercadopago-givewp-show-message.js", "varsPhp", array( - "admin_url" => admin_url("edit.php?post_type=give_forms&page=give-settings&tab=gateways§ion=mercado_pago") - )); - } - - public function add_setting_into_new_section($settings) { - switch (give_get_current_setting_section()) { - case 'mercado_pago': - - $settings[] = array( - 'type' => 'title', - 'id' => 'mercado_pago', - ); - - $settings[] = array( - 'name' => __('Mercado Pago Public Key', 'lknmp-gateway-givewp'), - 'id' => 'mercado_pago_key', - 'desc' => __('Mercado Pago Public Key.', 'lknmp-gateway-givewp'), - 'type' => 'password', - ); - - $settings[] = array( - 'name' => __('Mercado Pago Token', 'lknmp-gateway-givewp'), - 'id' => 'mercado_pago_token', - 'desc' => __('Mercado Pago Token Code.', 'lknmp-gateway-givewp'), - 'type' => 'password', - ); - - $settings[] = array( - 'name' => __('Title in Mercado Pago', 'lknmp-gateway-givewp'), - 'id' => 'mercado_pago_tittle', - 'desc' => __('This title will be used during checkout in Mercado Pago.', 'lknmp-gateway-givewp'), - 'type' => 'text', - ); - - $settings[] = array( - 'name' => __('Description in Mercado Pago', 'lknmp-gateway-givewp'), - 'id' => 'mercado_pago_description', - 'desc' => __('This description will be used during checkout in Mercado Pago.', 'lknmp-gateway-givewp'), - 'type' => 'text', - ); - - $settings[] = array( - 'name' => __('Advanced Debug Mode', 'lknmp-gateway-givewp'), - 'id' => 'mercado_pago_advanced_debug', - 'desc' => __('Enable advanced Debug environment (CONSOLE - JAVASCRIPT). Be careful enabling this option will leave your site vulnerable.', 'lknmp-gateway-givewp'), - 'type' => 'radio', - 'default' => 'disabled', - 'options' => array( - 'enabled' => __('Enable', 'lknmp-gateway-givewp'), - 'disabled' => __('Disable', 'lknmp-gateway-givewp'), - ), - ); - - $settings[] = array( - 'id' => 'mercado_pago', - 'type' => 'sectionend', - ); - - break; - }// // End switch() - - return $settings; - } - - /** - * Add new section to "General" setting tab - * - * @param $sections - * - * @return array - */ - public function new_setting_section($sections) { - $sections['mercado_pago'] = 'Mercado Pago'; - return $sections; - } -} + + */ +final class LknmpGatewayGiveWPAdmin { + /** + * The ID of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $plugin_name The ID of this plugin. + */ + private $plugin_name; + + /** + * The version of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $version The current version of this plugin. + */ + private $version; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $plugin_name The name of this plugin. + * @param string $version The version of this plugin. + */ + public function __construct( $plugin_name, $version ) { + $this->plugin_name = $plugin_name; + $this->version = $version; + } + + /** + * Register the stylesheets for the admin area. + * + * @since 1.0.0 + */ + public function enqueue_styles(): void { + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined + * in that particular class. + * + * The Lknmp_Gateway_Givewp_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/lknmp-gateway-givewp-admin.css', array(), $this->version, 'all' ); + } + + /** + * Register the JavaScript for the admin area. + * + * @since 1.0.0 + */ + public function enqueue_scripts($hook): void { + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined + * in that particular class. + * + * The Lknmp_Gateway_Givewp_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + wp_enqueue_script("lkn-mercadopago-givewp-show-message.js", plugin_dir_url(__FILE__) . 'js/lknmp-gateway-givewp-show-message.js', null, $this->version, false ); + + wp_localize_script("lkn-mercadopago-givewp-show-message.js", "varsPhp", array( + "admin_url" => admin_url("edit.php?post_type=give_forms&page=give-settings&tab=gateways§ion=mercado_pago") + )); + } + + public function add_setting_into_new_section($settings) { + switch (give_get_current_setting_section()) { + case 'mercado_pago': + + $settings[] = array( + 'type' => 'title', + 'id' => 'mercado_pago', + ); + + $settings[] = array( + 'name' => __('Mercado Pago Public Key', 'lknmp-gateway-givewp'), + 'id' => 'mercado_pago_key', + 'desc' => __('Mercado Pago Public Key.', 'lknmp-gateway-givewp'), + 'type' => 'password', + ); + + $settings[] = array( + 'name' => __('Mercado Pago Token', 'lknmp-gateway-givewp'), + 'id' => 'mercado_pago_token', + 'desc' => __('Mercado Pago Token Code.', 'lknmp-gateway-givewp'), + 'type' => 'password', + ); + + $settings[] = array( + 'name' => __('Title in Mercado Pago', 'lknmp-gateway-givewp'), + 'id' => 'mercado_pago_tittle', + 'desc' => __('This title will be used during checkout in Mercado Pago.', 'lknmp-gateway-givewp'), + 'type' => 'text', + ); + + $settings[] = array( + 'name' => __('Description in Mercado Pago', 'lknmp-gateway-givewp'), + 'id' => 'mercado_pago_description', + 'desc' => __('This description will be used during checkout in Mercado Pago.', 'lknmp-gateway-givewp'), + 'type' => 'text', + ); + + $settings[] = array( + 'name' => __('Advanced Debug Mode', 'lknmp-gateway-givewp'), + 'id' => 'mercado_pago_advanced_debug', + 'desc' => __('Enable advanced Debug environment (CONSOLE - JAVASCRIPT). Be careful enabling this option will leave your site vulnerable.', 'lknmp-gateway-givewp'), + 'type' => 'radio', + 'default' => 'disabled', + 'options' => array( + 'enabled' => __('Enable', 'lknmp-gateway-givewp'), + 'disabled' => __('Disable', 'lknmp-gateway-givewp'), + ), + ); + + $settings[] = array( + 'id' => 'mercado_pago', + 'type' => 'sectionend', + ); + + break; + }// // End switch() + + return $settings; + } + + /** + * Add new section to "General" setting tab + * + * @param $sections + * + * @return array + */ + public function new_setting_section($sections) { + $sections['mercado_pago'] = 'Mercado Pago'; + return $sections; + } +} diff --git a/Admin/css/lknmp-gateway-givewp-admin.css b/Admin/css/lknmp-gateway-givewp-admin.css index 00c8c7f..6eb381b 100755 --- a/Admin/css/lknmp-gateway-givewp-admin.css +++ b/Admin/css/lknmp-gateway-givewp-admin.css @@ -1,4 +1,4 @@ -/** - * All of the CSS for your admin-specific functionality should be - * included in this file. +/** + * All of the CSS for your admin-specific functionality should be + * included in this file. */ \ No newline at end of file diff --git a/Admin/js/lknmp-gateway-givewp-show-message.js b/Admin/js/lknmp-gateway-givewp-show-message.js index 5120043..52bc383 100755 --- a/Admin/js/lknmp-gateway-givewp-show-message.js +++ b/Admin/js/lknmp-gateway-givewp-show-message.js @@ -1,29 +1,29 @@ -document.addEventListener("DOMContentLoaded", () => { - if (window.location.href === varsPhp.admin_url) { - initialize(); - } -}); - -function initialize() { - const input = document.querySelector("#mercado_pago_token"); - const input2 = document.querySelector("#mercado_pago_key"); - - if (input && input2) { - const text = formatValue(input.value); - const text2 = formatValue(input2.value); - input.parentElement.insertAdjacentHTML("beforeend", `
${text}
`); - input2.parentElement.insertAdjacentHTML("beforeend", `
${text2}
`); - } -} - -function formatValue(value) { - const formatedValue = value.split("-"); - switch (formatedValue[0].toUpperCase()) { - case "APP_USR": - return "Ambiente Produção"; - case "TEST": - return "Ambiente Sandbox"; - default: - return "Chave incorreta"; - } -} +document.addEventListener("DOMContentLoaded", () => { + if (window.location.href === varsPhp.admin_url) { + initialize(); + } +}); + +function initialize() { + const input = document.querySelector("#mercado_pago_token"); + const input2 = document.querySelector("#mercado_pago_key"); + + if (input && input2) { + const text = formatValue(input.value); + const text2 = formatValue(input2.value); + input.parentElement.insertAdjacentHTML("beforeend", `
${text}
`); + input2.parentElement.insertAdjacentHTML("beforeend", `
${text2}
`); + } +} + +function formatValue(value) { + const formatedValue = value.split("-"); + switch (formatedValue[0].toUpperCase()) { + case "APP_USR": + return "Ambiente Produção"; + case "TEST": + return "Ambiente Sandbox"; + default: + return "Chave incorreta"; + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 8877767..758347c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,22 +1,22 @@ -# 1.2.2 - 25/09/2024 -* Atualização de documentação; -* Correção de slug de tradução no formato incorreto; -* Mudança na nomenclatura das configurações para evitar colisões. - -# 1.2.1 - 10/09/2024 -* Refatoração de plugin com slug e nome do plugin sugeridos pela equipe do WordPress. - -# 1.2.0 - 15/08/2024 -* Renderização do plugin corrigida -* Correção de alteração de método de pagamento -* Normativas WordPress aplicadas -* Notícia de inabilidade do plugin no formulário clássico e multistep - -# 1.0.1 - 05/08/2024 -* Mensagem adicionada ao inserir o token do Mercado Pago; -* Namespace do plugin atualizado; -* Refatoração com as novas diretrizes do WordPress; -* Atualização do README. - -# 1.0.0 - 31/05/2024 +# 1.2.2 - 25/09/2024 +* Atualização de documentação; +* Correção de slug de tradução no formato incorreto; +* Mudança na nomenclatura das configurações para evitar colisões. + +# 1.2.1 - 10/09/2024 +* Refatoração de plugin com slug e nome do plugin sugeridos pela equipe do WordPress. + +# 1.2.0 - 15/08/2024 +* Renderização do plugin corrigida +* Correção de alteração de método de pagamento +* Normativas WordPress aplicadas +* Notícia de inabilidade do plugin no formulário clássico e multistep + +# 1.0.1 - 05/08/2024 +* Mensagem adicionada ao inserir o token do Mercado Pago; +* Namespace do plugin atualizado; +* Refatoração com as novas diretrizes do WordPress; +* Atualização do README. + +# 1.0.0 - 31/05/2024 * Lançamento do plugin. \ No newline at end of file diff --git a/Includes/LknmpGatewayGiveWP.php b/Includes/LknmpGatewayGiveWP.php index 3b5d805..9f49982 100755 --- a/Includes/LknmpGatewayGiveWP.php +++ b/Includes/LknmpGatewayGiveWP.php @@ -1,321 +1,321 @@ - - */ -final class LknmpGatewayGiveWP { - /** - * The loader that's responsible for maintaining and registering all hooks that power - * the plugin. - * - * @since 1.0.0 - * @access protected - * @var LknmpGatewayGiveWPLoader $loader Maintains and registers all hooks for the plugin. - */ - protected $loader; - - /** - * The unique identifier of this plugin. - * - * @since 1.0.0 - * @access protected - * @var string $plugin_name The string used to uniquely identify this plugin. - */ - protected $plugin_name; - - /** - * The current version of the plugin. - * - * @since 1.0.0 - * @access protected - * @var string();ing $version The current version of the plugin. - */ - protected $version; - - /** - * Define the core functionality of the plugin. - * - * Set the plugin name and the plugin version that can be used throughout the plugin. - * Load the dependencies, define the locale, and set the hooks for the admin area and - * the public-facing side of the site. - * - * @since 1.0.0 - */ - public function __construct() { - if (defined('LKNMP_GATEWAY_GIVEWP_VERSION')) { - $this->version = LKNMP_GATEWAY_GIVEWP_VERSION; - } else { - $this->version = '1.0.0'; - } - $this->plugin_name = 'lknmp-gateway-givewp'; - - $this->load_dependencies(); - $this->set_locale(); - $this->define_admin_hooks(); - $this->define_public_hooks(); - $this->run(); - } - - /** - * Load the required dependencies for this plugin. - * - * Include the following files that make up the plugin: - * - * - Lknmp_Gateway_Givewp_Loader. Orchestrates the hooks of the plugin. - * - Lknmp_Gateway_Givewp_i18n. Defines internationalization functionality. - * - Lknmp_Gateway_Givewp_Admin. Defines all hooks for the admin area. - * - Lknmp_Gateway_Givewp_Public. Defines all hooks for the public side of the site. - * - * Create an instance of the loader which will be used to register the hooks - * with WordPress. - * - * @since 1.0.0 - * @access private - */ - private function load_dependencies(): void { - $this->loader = new LknmpGatewayGiveWPLoader(); - } - - /** - * Define the locale for this plugin for internationalization. - * - * Uses the Lknmp_Gateway_Givewp_i18n class in order to set the domain and to register the hook - * with WordPress. - * - * @since 1.0.0 - * @access private - */ - private function set_locale(): void { - $plugin_i18n = new LknmpGatewayGiveWPi18n(); - - $this->loader->add_action('plugins_loaded', $plugin_i18n, 'load_plugin_textdomain'); - } - - /** - * Register all of the hooks related to the admin area functionality - * of the plugin. - * - * @since 1.0.0 - * @access private - */ - private function define_admin_hooks(): void { - $plugin_admin = new LknmpGatewayGiveWPAdmin($this->get_plugin_name(), $this->get_version()); - $this->loader->add_filter('plugin_action_links_' . LKNMP_GATEWAY_GIVEWP_BASENAME, 'Lknmp\Gateway\Includes\LknmpGatewayGiveWPHelper', 'plugin_row_meta', 10, 2); - $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_styles'); - $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts'); - $this->loader->add_action('givewp_register_payment_gateway', $this, 'new_gateway_register'); - $this->loader->add_action('rest_api_init', $this, 'register_payment_routes'); - $this->loader->add_action('rest_api_init', $this, 'register_rest_route'); - $this->loader->add_filter('give_get_settings_gateways', $plugin_admin, 'add_setting_into_new_section'); - $this->loader->add_filter('give_get_sections_gateways', $plugin_admin, 'new_setting_section'); - } - - /** - * Register all of the hooks related to the public-facing functionality - * of the plugin. - * - * @since 1.0.0 - * @access private - */ - private function define_public_hooks(): void { - $plugin_public = new LknmpGatewayGiveWPPublic($this->get_plugin_name(), $this->get_version()); - - $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_styles'); - $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_scripts'); - $this->loader->add_action('givewp_register_payment_gateway', $this, 'new_gateway_register'); - } - - /** - * Run the loader to execute all of the hooks with WordPress. - * - * @since 1.0.0 - */ - public function run(): void { - $this->loader->run(); - } - - /** - * The name of the plugin used to uniquely identify it within the context of - * WordPress and to define internationalization functionality. - * - * @since 1.0.0 - * @return string The name of the plugin. - */ - public function get_plugin_name() { - return $this->plugin_name; - } - - /** - * The reference to the class that orchestrates the hooks with the plugin. - * - * @since 1.0.0 - * @return LknmpGatewayGiveWPLoader Orchestrates the hooks of the plugin. - */ - public function get_loader() { - return $this->loader; - } - - /** - * Retrieve the version number of the plugin. - * - * @since 1.0.0 - * @return string The version number of the plugin. - */ - public function get_version() { - return $this->version; - } - - /** - * Register gateway to new GiveWP v3 - * - * @since 3.0.0 - * - * @param PaymentGatewayRegister $paymentGatewayRegister - * - * @return void - */ - public function new_gateway_register($paymentGatewayRegister) :void { - $paymentGatewayRegister->registerGateway('Lknmp\Gateway\PublicView\LknmpGatewayGiveWPGateway'); - } - - final public function mercadopago_get_endpoint_payments() { - // rest_ensure_response() wraps the data we want to return into a WP_REST_Response, and ensures it will be properly returned. - return rest_ensure_response( 'Hello World, this is the WordPress REST API' ); - } - - /** - * This function is where we register our routes for our example endpoint. - */ - final public function register_payment_routes(): void { - // register_rest_route() handles more arguments but we are going to stick to the basics for now. - register_rest_route('lknmp/v1', '/payments', array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array($this, 'mercadopago_get_endpoint_payments'), - ) ); - } - - public function register_rest_route(): void { - register_rest_route( 'lknmp/v1', '/payments/checkpayment', array( - 'methods' => 'GET', - 'callback' => array($this, 'get_handle_custom_payment_route'), - 'permission_callback' => '__return_true', - ) ); - } - - public function get_handle_custom_payment_route($request) { - $id = $request->get_param('id'); - $statusFront = $request->get_param('statusFront'); - if (empty($id)) { - return new WP_Error('missing_params', 'Missing parameter id', array('status' => 422)); - } - - switch ($statusFront) { - case '1': - $donation_id = get_option("lknmp_gateway_" . $id); - if ( ! $donation_id) { - return new WP_Error('no_donation_id', 'No donation ID found', array('status' => 404)); - } - - $donation = Donation::find($donation_id); - if ( ! $donation) { - return new WP_Error('donation_not_found', 'Donation not found', array('status' => 404)); - } - - $donation->status = DonationStatus::COMPLETE(); - $donation->save(); - if ( ! $donation) { - return new WP_Error('save_failed', 'Failed to update donation status', array('status' => 500)); - } - - $url_pagina = give_get_success_page_uri(); - - header("Location: $url_pagina", true, 302); - exit; - break; - case '2': - $donation_id = get_option("lknmp_gateway_" . $id); - if ( ! $donation_id) { - return new WP_Error('no_donation_id', 'No donation ID found', array('status' => 404)); - } - $donation = Donation::find($donation_id); - if ( ! $donation) { - return new WP_Error('donation_not_found', 'Donation not found', array('status' => 404)); - } - $donation->status = DonationStatus::PENDING(); - $donation->save(); - if ( ! $donation) { - return new WP_Error('save_failed', 'Failed to update donation status', array('status' => 500)); - } - - $url_pagina = give_get_success_page_uri(); - - header("Location: $url_pagina", true, 302); - exit; - break; - case '3': - $donation_id = get_option("lknmp_gateway_" . $id); - if ( ! $donation_id) { - return new WP_Error('no_donation_id', 'No donation ID found', array('status' => 404)); - } - $donation = Donation::find($donation_id); - if ( ! $donation) { - return new WP_Error('donation_not_found', 'Donation not found', array('status' => 404)); - } - - $donation->status = DonationStatus::FAILED(); - $donation->save(); - if ( ! $donation) { - return new WP_Error('save_failed', 'Failed to update donation status', array('status' => 500)); - } - - $response_data = array( - 'id' => $id, - 'donation_id' => $donation_id, - ); - - $url_pagina = give_get_failed_transaction_uri(); - - header("Location: $url_pagina", true, 302); - exit; - break; - default: - return new WP_REST_Response(array('message' => 'Houve erro no pagamento'), 200); - break; - } - } + + */ +final class LknmpGatewayGiveWP { + /** + * The loader that's responsible for maintaining and registering all hooks that power + * the plugin. + * + * @since 1.0.0 + * @access protected + * @var LknmpGatewayGiveWPLoader $loader Maintains and registers all hooks for the plugin. + */ + protected $loader; + + /** + * The unique identifier of this plugin. + * + * @since 1.0.0 + * @access protected + * @var string $plugin_name The string used to uniquely identify this plugin. + */ + protected $plugin_name; + + /** + * The current version of the plugin. + * + * @since 1.0.0 + * @access protected + * @var string();ing $version The current version of the plugin. + */ + protected $version; + + /** + * Define the core functionality of the plugin. + * + * Set the plugin name and the plugin version that can be used throughout the plugin. + * Load the dependencies, define the locale, and set the hooks for the admin area and + * the public-facing side of the site. + * + * @since 1.0.0 + */ + public function __construct() { + if (defined('LKNMP_GATEWAY_GIVEWP_VERSION')) { + $this->version = LKNMP_GATEWAY_GIVEWP_VERSION; + } else { + $this->version = '1.0.0'; + } + $this->plugin_name = 'lknmp-gateway-givewp'; + + $this->load_dependencies(); + $this->set_locale(); + $this->define_admin_hooks(); + $this->define_public_hooks(); + $this->run(); + } + + /** + * Load the required dependencies for this plugin. + * + * Include the following files that make up the plugin: + * + * - Lknmp_Gateway_Givewp_Loader. Orchestrates the hooks of the plugin. + * - Lknmp_Gateway_Givewp_i18n. Defines internationalization functionality. + * - Lknmp_Gateway_Givewp_Admin. Defines all hooks for the admin area. + * - Lknmp_Gateway_Givewp_Public. Defines all hooks for the public side of the site. + * + * Create an instance of the loader which will be used to register the hooks + * with WordPress. + * + * @since 1.0.0 + * @access private + */ + private function load_dependencies(): void { + $this->loader = new LknmpGatewayGiveWPLoader(); + } + + /** + * Define the locale for this plugin for internationalization. + * + * Uses the Lknmp_Gateway_Givewp_i18n class in order to set the domain and to register the hook + * with WordPress. + * + * @since 1.0.0 + * @access private + */ + private function set_locale(): void { + $plugin_i18n = new LknmpGatewayGiveWPi18n(); + + $this->loader->add_action('plugins_loaded', $plugin_i18n, 'load_plugin_textdomain'); + } + + /** + * Register all of the hooks related to the admin area functionality + * of the plugin. + * + * @since 1.0.0 + * @access private + */ + private function define_admin_hooks(): void { + $plugin_admin = new LknmpGatewayGiveWPAdmin($this->get_plugin_name(), $this->get_version()); + $this->loader->add_filter('plugin_action_links_' . LKNMP_GATEWAY_GIVEWP_BASENAME, 'Lknmp\Gateway\Includes\LknmpGatewayGiveWPHelper', 'plugin_row_meta', 10, 2); + $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_styles'); + $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts'); + $this->loader->add_action('givewp_register_payment_gateway', $this, 'new_gateway_register'); + $this->loader->add_action('rest_api_init', $this, 'register_payment_routes'); + $this->loader->add_action('rest_api_init', $this, 'register_rest_route'); + $this->loader->add_filter('give_get_settings_gateways', $plugin_admin, 'add_setting_into_new_section'); + $this->loader->add_filter('give_get_sections_gateways', $plugin_admin, 'new_setting_section'); + } + + /** + * Register all of the hooks related to the public-facing functionality + * of the plugin. + * + * @since 1.0.0 + * @access private + */ + private function define_public_hooks(): void { + $plugin_public = new LknmpGatewayGiveWPPublic($this->get_plugin_name(), $this->get_version()); + + $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_styles'); + $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_scripts'); + $this->loader->add_action('givewp_register_payment_gateway', $this, 'new_gateway_register'); + } + + /** + * Run the loader to execute all of the hooks with WordPress. + * + * @since 1.0.0 + */ + public function run(): void { + $this->loader->run(); + } + + /** + * The name of the plugin used to uniquely identify it within the context of + * WordPress and to define internationalization functionality. + * + * @since 1.0.0 + * @return string The name of the plugin. + */ + public function get_plugin_name() { + return $this->plugin_name; + } + + /** + * The reference to the class that orchestrates the hooks with the plugin. + * + * @since 1.0.0 + * @return LknmpGatewayGiveWPLoader Orchestrates the hooks of the plugin. + */ + public function get_loader() { + return $this->loader; + } + + /** + * Retrieve the version number of the plugin. + * + * @since 1.0.0 + * @return string The version number of the plugin. + */ + public function get_version() { + return $this->version; + } + + /** + * Register gateway to new GiveWP v3 + * + * @since 3.0.0 + * + * @param PaymentGatewayRegister $paymentGatewayRegister + * + * @return void + */ + public function new_gateway_register($paymentGatewayRegister) :void { + $paymentGatewayRegister->registerGateway('Lknmp\Gateway\PublicView\LknmpGatewayGiveWPGateway'); + } + + final public function mercadopago_get_endpoint_payments() { + // rest_ensure_response() wraps the data we want to return into a WP_REST_Response, and ensures it will be properly returned. + return rest_ensure_response( 'Hello World, this is the WordPress REST API' ); + } + + /** + * This function is where we register our routes for our example endpoint. + */ + final public function register_payment_routes(): void { + // register_rest_route() handles more arguments but we are going to stick to the basics for now. + register_rest_route('lknmp/v1', '/payments', array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array($this, 'mercadopago_get_endpoint_payments'), + ) ); + } + + public function register_rest_route(): void { + register_rest_route( 'lknmp/v1', '/payments/checkpayment', array( + 'methods' => 'GET', + 'callback' => array($this, 'get_handle_custom_payment_route'), + 'permission_callback' => '__return_true', + ) ); + } + + public function get_handle_custom_payment_route($request) { + $id = $request->get_param('id'); + $statusFront = $request->get_param('statusFront'); + if (empty($id)) { + return new WP_Error('missing_params', 'Missing parameter id', array('status' => 422)); + } + + switch ($statusFront) { + case '1': + $donation_id = get_option("lknmp_gateway_" . $id); + if ( ! $donation_id) { + return new WP_Error('no_donation_id', 'No donation ID found', array('status' => 404)); + } + + $donation = Donation::find($donation_id); + if ( ! $donation) { + return new WP_Error('donation_not_found', 'Donation not found', array('status' => 404)); + } + + $donation->status = DonationStatus::COMPLETE(); + $donation->save(); + if ( ! $donation) { + return new WP_Error('save_failed', 'Failed to update donation status', array('status' => 500)); + } + + $url_pagina = give_get_success_page_uri(); + + header("Location: $url_pagina", true, 302); + exit; + break; + case '2': + $donation_id = get_option("lknmp_gateway_" . $id); + if ( ! $donation_id) { + return new WP_Error('no_donation_id', 'No donation ID found', array('status' => 404)); + } + $donation = Donation::find($donation_id); + if ( ! $donation) { + return new WP_Error('donation_not_found', 'Donation not found', array('status' => 404)); + } + $donation->status = DonationStatus::PENDING(); + $donation->save(); + if ( ! $donation) { + return new WP_Error('save_failed', 'Failed to update donation status', array('status' => 500)); + } + + $url_pagina = give_get_success_page_uri(); + + header("Location: $url_pagina", true, 302); + exit; + break; + case '3': + $donation_id = get_option("lknmp_gateway_" . $id); + if ( ! $donation_id) { + return new WP_Error('no_donation_id', 'No donation ID found', array('status' => 404)); + } + $donation = Donation::find($donation_id); + if ( ! $donation) { + return new WP_Error('donation_not_found', 'Donation not found', array('status' => 404)); + } + + $donation->status = DonationStatus::FAILED(); + $donation->save(); + if ( ! $donation) { + return new WP_Error('save_failed', 'Failed to update donation status', array('status' => 500)); + } + + $response_data = array( + 'id' => $id, + 'donation_id' => $donation_id, + ); + + $url_pagina = give_get_failed_transaction_uri(); + + header("Location: $url_pagina", true, 302); + exit; + break; + default: + return new WP_REST_Response(array('message' => 'Houve erro no pagamento'), 200); + break; + } + } } \ No newline at end of file diff --git a/Includes/LknmpGatewayGiveWPActivator.php b/Includes/LknmpGatewayGiveWPActivator.php index b14be7d..234594e 100755 --- a/Includes/LknmpGatewayGiveWPActivator.php +++ b/Includes/LknmpGatewayGiveWPActivator.php @@ -1,35 +1,35 @@ - - */ -final class LknmpGatewayGiveWPActivator { - /** - * Short Description. (use period) - * - * Long Description. - * - * @since 1.0.0 - */ - public static function activate(): void { - } -} + + */ +final class LknmpGatewayGiveWPActivator { + /** + * Short Description. (use period) + * + * Long Description. + * + * @since 1.0.0 + */ + public static function activate(): void { + } +} diff --git a/Includes/LknmpGatewayGiveWPDeactivator.php b/Includes/LknmpGatewayGiveWPDeactivator.php index 640238b..1b6433f 100755 --- a/Includes/LknmpGatewayGiveWPDeactivator.php +++ b/Includes/LknmpGatewayGiveWPDeactivator.php @@ -1,35 +1,35 @@ - - */ -final class LknmpGatewayGiveWPDeactivator { - /** - * Short Description. (use period) - * - * Long Description. - * - * @since 1.0.0 - */ - public static function deactivate(): void { - } -} + + */ +final class LknmpGatewayGiveWPDeactivator { + /** + * Short Description. (use period) + * + * Long Description. + * + * @since 1.0.0 + */ + public static function deactivate(): void { + } +} diff --git a/Includes/LknmpGatewayGiveWPLoader.php b/Includes/LknmpGatewayGiveWPLoader.php index aa3b782..84a4f6b 100755 --- a/Includes/LknmpGatewayGiveWPLoader.php +++ b/Includes/LknmpGatewayGiveWPLoader.php @@ -1,122 +1,122 @@ - - */ -final class LknmpGatewayGiveWPLoader { - /** - * The array of actions registered with WordPress. - * - * @since 1.0.0 - * @access protected - * @var array $actions The actions registered with WordPress to fire when the plugin loads. - */ - protected $actions; - - /** - * The array of filters registered with WordPress. - * - * @since 1.0.0 - * @access protected - * @var array $filters The filters registered with WordPress to fire when the plugin loads. - */ - protected $filters; - - /** - * Initialize the collections used to maintain the actions and filters. - * - * @since 1.0.0 - */ - public function __construct() { - $this->actions = array(); - $this->filters = array(); - } - - /** - * Add a new action to the collection to be registered with WordPress. - * - * @since 1.0.0 - * @param string $hook The name of the WordPress action that is being registered. - * @param object $component A reference to the instance of the object on which the action is defined. - * @param string $callback The name of the function definition on the $component. - * @param int $priority Optional. The priority at which the function should be fired. Default is 10. - * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1. - */ - public function add_action($hook, $component, $callback, $priority = 10, $accepted_args = 1): void { - $this->actions = $this->add($this->actions, $hook, $component, $callback, $priority, $accepted_args); - } - - /** - * Add a new filter to the collection to be registered with WordPress. - * - * @since 1.0.0 - * @param string $hook The name of the WordPress filter that is being registered. - * @param object $component A reference to the instance of the object on which the filter is defined. - * @param string $callback The name of the function definition on the $component. - * @param int $priority Optional. The priority at which the function should be fired. Default is 10. - * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1 - */ - public function add_filter($hook, $component, $callback, $priority = 10, $accepted_args = 1): void { - $this->filters = $this->add($this->filters, $hook, $component, $callback, $priority, $accepted_args); - } - - /** - * A utility function that is used to register the actions and hooks into a single - * collection. - * - * @since 1.0.0 - * @access private - * @param array $hooks The collection of hooks that is being registered (that is, actions or filters). - * @param string $hook The name of the WordPress filter that is being registered. - * @param object $component A reference to the instance of the object on which the filter is defined. - * @param string $callback The name of the function definition on the $component. - * @param int $priority The priority at which the function should be fired. - * @param int $accepted_args The number of arguments that should be passed to the $callback. - * @return array The collection of actions and filters registered with WordPress. - */ - private function add($hooks, $hook, $component, $callback, $priority, $accepted_args) { - $hooks[] = array( - 'hook' => $hook, - 'component' => $component, - 'callback' => $callback, - 'priority' => $priority, - 'accepted_args' => $accepted_args - ); - - return $hooks; - } - - /** - * Register the filters and actions with WordPress. - * - * @since 1.0.0 - */ - public function run(): void { - foreach ($this->filters as $hook) { - add_filter($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']); - } - - foreach ($this->actions as $hook) { - add_action($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']); - } - } -} + + */ +final class LknmpGatewayGiveWPLoader { + /** + * The array of actions registered with WordPress. + * + * @since 1.0.0 + * @access protected + * @var array $actions The actions registered with WordPress to fire when the plugin loads. + */ + protected $actions; + + /** + * The array of filters registered with WordPress. + * + * @since 1.0.0 + * @access protected + * @var array $filters The filters registered with WordPress to fire when the plugin loads. + */ + protected $filters; + + /** + * Initialize the collections used to maintain the actions and filters. + * + * @since 1.0.0 + */ + public function __construct() { + $this->actions = array(); + $this->filters = array(); + } + + /** + * Add a new action to the collection to be registered with WordPress. + * + * @since 1.0.0 + * @param string $hook The name of the WordPress action that is being registered. + * @param object $component A reference to the instance of the object on which the action is defined. + * @param string $callback The name of the function definition on the $component. + * @param int $priority Optional. The priority at which the function should be fired. Default is 10. + * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1. + */ + public function add_action($hook, $component, $callback, $priority = 10, $accepted_args = 1): void { + $this->actions = $this->add($this->actions, $hook, $component, $callback, $priority, $accepted_args); + } + + /** + * Add a new filter to the collection to be registered with WordPress. + * + * @since 1.0.0 + * @param string $hook The name of the WordPress filter that is being registered. + * @param object $component A reference to the instance of the object on which the filter is defined. + * @param string $callback The name of the function definition on the $component. + * @param int $priority Optional. The priority at which the function should be fired. Default is 10. + * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1 + */ + public function add_filter($hook, $component, $callback, $priority = 10, $accepted_args = 1): void { + $this->filters = $this->add($this->filters, $hook, $component, $callback, $priority, $accepted_args); + } + + /** + * A utility function that is used to register the actions and hooks into a single + * collection. + * + * @since 1.0.0 + * @access private + * @param array $hooks The collection of hooks that is being registered (that is, actions or filters). + * @param string $hook The name of the WordPress filter that is being registered. + * @param object $component A reference to the instance of the object on which the filter is defined. + * @param string $callback The name of the function definition on the $component. + * @param int $priority The priority at which the function should be fired. + * @param int $accepted_args The number of arguments that should be passed to the $callback. + * @return array The collection of actions and filters registered with WordPress. + */ + private function add($hooks, $hook, $component, $callback, $priority, $accepted_args) { + $hooks[] = array( + 'hook' => $hook, + 'component' => $component, + 'callback' => $callback, + 'priority' => $priority, + 'accepted_args' => $accepted_args + ); + + return $hooks; + } + + /** + * Register the filters and actions with WordPress. + * + * @since 1.0.0 + */ + public function run(): void { + foreach ($this->filters as $hook) { + add_filter($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']); + } + + foreach ($this->actions as $hook) { + add_action($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']); + } + } +} diff --git a/Includes/LknmpGatewayGiveWPi18n.php b/Includes/LknmpGatewayGiveWPi18n.php index 31ebe10..7f2e6c8 100755 --- a/Includes/LknmpGatewayGiveWPi18n.php +++ b/Includes/LknmpGatewayGiveWPi18n.php @@ -1,41 +1,41 @@ - - */ -final class LknmpGatewayGiveWPi18n { - /** - * Load the plugin text domain for translation. - * - * @since 1.0.0 - */ - public function load_plugin_textdomain(): void { - load_plugin_textdomain( - 'lknmp-gateway-givewp', - false, - dirname(dirname(plugin_basename(__FILE__))) . '/languages/' - ); - } -} + + */ +final class LknmpGatewayGiveWPi18n { + /** + * Load the plugin text domain for translation. + * + * @since 1.0.0 + */ + public function load_plugin_textdomain(): void { + load_plugin_textdomain( + 'lknmp-gateway-givewp', + false, + dirname(dirname(plugin_basename(__FILE__))) . '/languages/' + ); + } +} diff --git a/Includes/index.php b/Includes/index.php index 7e187a2..7139bf3 100755 --- a/Includes/index.php +++ b/Includes/index.php @@ -1,3 +1,3 @@ - - */ -final class LknmpGatewayGiveWPPublic { - /** - * The ID of this plugin. - * - * @since 1.0.0 - * @access private - * @var string $plugin_name The ID of this plugin. - */ - private $plugin_name; - - /** - * The version of this plugin. - * - * @since 1.0.0 - * @access private - * @var string $version The current version of this plugin. - */ - private $version; - - /** - * Initialize the class and set its properties. - * - * @since 1.0.0 - * @param string $plugin_name The name of the plugin. - * @param string $version The version of this plugin. - */ - public function __construct( $plugin_name, $version ) { - $this->plugin_name = $plugin_name; - $this->version = $version; - } - - /** - * Register the stylesheets for the public-facing side of the site. - * - * @since 1.0.0 - */ - public function enqueue_styles(): void { - /** - * This function is provided for demonstration purposes only. - * - * An instance of this class should be passed to the run() function - * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined - * in that particular class. - * - * The Lknmp_Gateway_Givewp_Loader will then create the relationship - * between the defined hooks and the functions defined in this - * class. - */ - wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/lknmp-gateway-givewp-public.css', array(), $this->version, 'all' ); - } - - /** - * Register the JavaScript for the public-facing side of the site. - * - * @since 1.0.0 - */ - public function enqueue_scripts(): void { - /** - * This function is provided for demonstration purposes only. - * - * An instance of this class should be passed to the run() function - * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined - * in that particular class. - * - * The Lknmp_Gateway_Givewp_Loader will then create the relationship - * between the defined hooks and the functions defined in this - * class. - */ - wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/lknmp-gateway-givewp-public.js', array('jquery'), $this->version, false ); - - $configs = LknmpGatewayGiveWPHelper::get_configs(); - $url_pagina = site_url(); - $idUnique = uniqid(); - - $MenssageErrorNameEmpty = __('The Name field is empty. Please fill in this field before proceeding.', 'lknmp-gateway-givewp'); - $MenssageErrorName = __('The Name field must be at least 3 letters.', 'lknmp-gateway-givewp'); - $MenssageErrorEmailEmpty = __('The Email field is empty. Please fill in this field before proceeding.', 'lknmp-gateway-givewp'); - $MenssageErrorEmailInvalid = __('The Email field is invalid. Please enter a valid email address.', 'lknmp-gateway-givewp'); - - $lknmp_globals = array( - 'key' => $configs['key'], - 'token' => $configs['token'], - 'pageUrl' => $url_pagina, - 'idUnique' => $idUnique, - 'tittle' => $configs['tittle'], - 'description' => $configs['description'], - 'advDebug' => $configs['advDebug'], - 'translation' => array( - 'MenssageErrorNameEmpty' => $MenssageErrorNameEmpty, - 'MenssageErrorName' => $MenssageErrorName, - 'MenssageErrorEmailEmpty' => $MenssageErrorEmailEmpty, - 'MenssageErrorEmailInvalid' => $$MenssageErrorEmailInvalid, - ), - ); - - wp_localize_script($this->plugin_name, 'lknmpGlobals', $lknmp_globals); - - wp_enqueue_script( $this->plugin_name . 'MercadoPago', plugin_dir_url( __FILE__ ) . 'js/MercadoPago.js', array(), $this->version, false); - } -} + + */ +final class LknmpGatewayGiveWPPublic { + /** + * The ID of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $plugin_name The ID of this plugin. + */ + private $plugin_name; + + /** + * The version of this plugin. + * + * @since 1.0.0 + * @access private + * @var string $version The current version of this plugin. + */ + private $version; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $plugin_name The name of the plugin. + * @param string $version The version of this plugin. + */ + public function __construct( $plugin_name, $version ) { + $this->plugin_name = $plugin_name; + $this->version = $version; + } + + /** + * Register the stylesheets for the public-facing side of the site. + * + * @since 1.0.0 + */ + public function enqueue_styles(): void { + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined + * in that particular class. + * + * The Lknmp_Gateway_Givewp_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/lknmp-gateway-givewp-public.css', array(), $this->version, 'all' ); + } + + /** + * Register the JavaScript for the public-facing side of the site. + * + * @since 1.0.0 + */ + public function enqueue_scripts(): void { + /** + * This function is provided for demonstration purposes only. + * + * An instance of this class should be passed to the run() function + * defined in Lknmp_Gateway_Givewp_Loader as all of the hooks are defined + * in that particular class. + * + * The Lknmp_Gateway_Givewp_Loader will then create the relationship + * between the defined hooks and the functions defined in this + * class. + */ + wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/lknmp-gateway-givewp-public.js', array('jquery'), $this->version, false ); + + $configs = LknmpGatewayGiveWPHelper::get_configs(); + $url_pagina = site_url(); + $idUnique = uniqid(); + + $MenssageErrorNameEmpty = __('The Name field is empty. Please fill in this field before proceeding.', 'lknmp-gateway-givewp'); + $MenssageErrorName = __('The Name field must be at least 3 letters.', 'lknmp-gateway-givewp'); + $MenssageErrorEmailEmpty = __('The Email field is empty. Please fill in this field before proceeding.', 'lknmp-gateway-givewp'); + $MenssageErrorEmailInvalid = __('The Email field is invalid. Please enter a valid email address.', 'lknmp-gateway-givewp'); + + $lknmp_globals = array( + 'key' => $configs['key'], + 'token' => $configs['token'], + 'pageUrl' => $url_pagina, + 'idUnique' => $idUnique, + 'tittle' => $configs['tittle'], + 'description' => $configs['description'], + 'advDebug' => $configs['advDebug'], + 'translation' => array( + 'MenssageErrorNameEmpty' => $MenssageErrorNameEmpty, + 'MenssageErrorName' => $MenssageErrorName, + 'MenssageErrorEmailEmpty' => $MenssageErrorEmailEmpty, + 'MenssageErrorEmailInvalid' => $$MenssageErrorEmailInvalid, + ), + ); + + wp_localize_script($this->plugin_name, 'lknmpGlobals', $lknmp_globals); + + wp_enqueue_script( $this->plugin_name . 'MercadoPago', plugin_dir_url( __FILE__ ) . 'js/MercadoPago.js', array(), $this->version, false); + } +} diff --git a/Public/css/lknmp-gateway-givewp-public.css b/Public/css/lknmp-gateway-givewp-public.css index 65bbf96..d170952 100755 --- a/Public/css/lknmp-gateway-givewp-public.css +++ b/Public/css/lknmp-gateway-givewp-public.css @@ -1,4 +1,4 @@ -/** - * All of the CSS for your public-facing functionality should be - * included in this file. +/** + * All of the CSS for your public-facing functionality should be + * included in this file. */ \ No newline at end of file diff --git a/Public/js/MercadoPago.js b/Public/js/MercadoPago.js index 3061f3b..cfd9a05 100755 --- a/Public/js/MercadoPago.js +++ b/Public/js/MercadoPago.js @@ -1,5 +1,5 @@ -/** - * SDK MercadoPago.js V2 - * @see https://github.com/mercadopago/sdk-js - */ +/** + * SDK MercadoPago.js V2 + * @see https://github.com/mercadopago/sdk-js + */ (() => { var e, t = { 975: (e, t, r) => { "use strict"; var i = r(606); function n(e) { if ("string" != typeof e) throw new TypeError("Path must be a string. Received " + JSON.stringify(e)) } function o(e, t) { for (var r, i = "", n = 0, o = -1, a = 0, s = 0; s <= e.length; ++s) { if (s < e.length) r = e.charCodeAt(s); else { if (47 === r) break; r = 47 } if (47 === r) { if (o === s - 1 || 1 === a); else if (o !== s - 1 && 2 === a) { if (i.length < 2 || 2 !== n || 46 !== i.charCodeAt(i.length - 1) || 46 !== i.charCodeAt(i.length - 2)) if (i.length > 2) { var c = i.lastIndexOf("/"); if (c !== i.length - 1) { -1 === c ? (i = "", n = 0) : n = (i = i.slice(0, c)).length - 1 - i.lastIndexOf("/"), o = s, a = 0; continue } } else if (2 === i.length || 1 === i.length) { i = "", n = 0, o = s, a = 0; continue } t && (i.length > 0 ? i += "/.." : i = "..", n = 2) } else i.length > 0 ? i += "/" + e.slice(o + 1, s) : i = e.slice(o + 1, s), n = s - o - 1; o = s, a = 0 } else 46 === r && -1 !== a ? ++a : a = -1 } return i } var a = { resolve: function () { for (var e, t = "", r = !1, a = arguments.length - 1; a >= -1 && !r; a--) { var s; a >= 0 ? s = arguments[a] : (void 0 === e && (e = i.cwd()), s = e), n(s), 0 !== s.length && (t = s + "/" + t, r = 47 === s.charCodeAt(0)) } return t = o(t, !r), r ? t.length > 0 ? "/" + t : "/" : t.length > 0 ? t : "." }, normalize: function (e) { if (n(e), 0 === e.length) return "."; var t = 47 === e.charCodeAt(0), r = 47 === e.charCodeAt(e.length - 1); return 0 !== (e = o(e, !t)).length || t || (e = "."), e.length > 0 && r && (e += "/"), t ? "/" + e : e }, isAbsolute: function (e) { return n(e), e.length > 0 && 47 === e.charCodeAt(0) }, join: function () { if (0 === arguments.length) return "."; for (var e, t = 0; t < arguments.length; ++t) { var r = arguments[t]; n(r), r.length > 0 && (void 0 === e ? e = r : e += "/" + r) } return void 0 === e ? "." : a.normalize(e) }, relative: function (e, t) { if (n(e), n(t), e === t) return ""; if ((e = a.resolve(e)) === (t = a.resolve(t))) return ""; for (var r = 1; r < e.length && 47 === e.charCodeAt(r); ++r); for (var i = e.length, o = i - r, s = 1; s < t.length && 47 === t.charCodeAt(s); ++s); for (var c = t.length - s, d = o < c ? o : c, l = -1, u = 0; u <= d; ++u) { if (u === d) { if (c > d) { if (47 === t.charCodeAt(s + u)) return t.slice(s + u + 1); if (0 === u) return t.slice(s + u) } else o > d && (47 === e.charCodeAt(r + u) ? l = u : 0 === u && (l = 0)); break } var p = e.charCodeAt(r + u); if (p !== t.charCodeAt(s + u)) break; 47 === p && (l = u) } var h = ""; for (u = r + l + 1; u <= i; ++u)u !== i && 47 !== e.charCodeAt(u) || (0 === h.length ? h += ".." : h += "/.."); return h.length > 0 ? h + t.slice(s + l) : (s += l, 47 === t.charCodeAt(s) && ++s, t.slice(s)) }, _makeLong: function (e) { return e }, dirname: function (e) { if (n(e), 0 === e.length) return "."; for (var t = e.charCodeAt(0), r = 47 === t, i = -1, o = !0, a = e.length - 1; a >= 1; --a)if (47 === (t = e.charCodeAt(a))) { if (!o) { i = a; break } } else o = !1; return -1 === i ? r ? "/" : "." : r && 1 === i ? "//" : e.slice(0, i) }, basename: function (e, t) { if (void 0 !== t && "string" != typeof t) throw new TypeError('"ext" argument must be a string'); n(e); var r, i = 0, o = -1, a = !0; if (void 0 !== t && t.length > 0 && t.length <= e.length) { if (t.length === e.length && t === e) return ""; var s = t.length - 1, c = -1; for (r = e.length - 1; r >= 0; --r) { var d = e.charCodeAt(r); if (47 === d) { if (!a) { i = r + 1; break } } else -1 === c && (a = !1, c = r + 1), s >= 0 && (d === t.charCodeAt(s) ? -1 == --s && (o = r) : (s = -1, o = c)) } return i === o ? o = c : -1 === o && (o = e.length), e.slice(i, o) } for (r = e.length - 1; r >= 0; --r)if (47 === e.charCodeAt(r)) { if (!a) { i = r + 1; break } } else -1 === o && (a = !1, o = r + 1); return -1 === o ? "" : e.slice(i, o) }, extname: function (e) { n(e); for (var t = -1, r = 0, i = -1, o = !0, a = 0, s = e.length - 1; s >= 0; --s) { var c = e.charCodeAt(s); if (47 !== c) -1 === i && (o = !1, i = s + 1), 46 === c ? -1 === t ? t = s : 1 !== a && (a = 1) : -1 !== t && (a = -1); else if (!o) { r = s + 1; break } } return -1 === t || -1 === i || 0 === a || 1 === a && t === i - 1 && t === r + 1 ? "" : e.slice(t, i) }, format: function (e) { if (null === e || "object" != typeof e) throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof e); return function (e, t) { var r = t.dir || t.root, i = t.base || (t.name || "") + (t.ext || ""); return r ? r === t.root ? r + i : r + "/" + i : i }(0, e) }, parse: function (e) { n(e); var t = { root: "", dir: "", base: "", ext: "", name: "" }; if (0 === e.length) return t; var r, i = e.charCodeAt(0), o = 47 === i; o ? (t.root = "/", r = 1) : r = 0; for (var a = -1, s = 0, c = -1, d = !0, l = e.length - 1, u = 0; l >= r; --l)if (47 !== (i = e.charCodeAt(l))) -1 === c && (d = !1, c = l + 1), 46 === i ? -1 === a ? a = l : 1 !== u && (u = 1) : -1 !== a && (u = -1); else if (!d) { s = l + 1; break } return -1 === a || -1 === c || 0 === u || 1 === u && a === c - 1 && a === s + 1 ? -1 !== c && (t.base = t.name = 0 === s && o ? e.slice(1, c) : e.slice(s, c)) : (0 === s && o ? (t.name = e.slice(1, a), t.base = e.slice(1, c)) : (t.name = e.slice(s, a), t.base = e.slice(s, c)), t.ext = e.slice(a, c)), s > 0 ? t.dir = e.slice(0, s - 1) : o && (t.dir = "/"), t }, sep: "/", delimiter: ":", win32: null, posix: null }; a.posix = a, e.exports = a }, 606: e => { var t, r, i = e.exports = {}; function n() { throw new Error("setTimeout has not been defined") } function o() { throw new Error("clearTimeout has not been defined") } function a(e) { if (t === setTimeout) return setTimeout(e, 0); if ((t === n || !t) && setTimeout) return t = setTimeout, setTimeout(e, 0); try { return t(e, 0) } catch (r) { try { return t.call(null, e, 0) } catch (r) { return t.call(this, e, 0) } } } !function () { try { t = "function" == typeof setTimeout ? setTimeout : n } catch (e) { t = n } try { r = "function" == typeof clearTimeout ? clearTimeout : o } catch (e) { r = o } }(); var s, c = [], d = !1, l = -1; function u() { d && s && (d = !1, s.length ? c = s.concat(c) : l = -1, c.length && p()) } function p() { if (!d) { var e = a(u); d = !0; for (var t = c.length; t;) { for (s = c, c = []; ++l < t;)s && s[l].run(); l = -1, t = c.length } s = null, d = !1, function (e) { if (r === clearTimeout) return clearTimeout(e); if ((r === o || !r) && clearTimeout) return r = clearTimeout, clearTimeout(e); try { return r(e) } catch (t) { try { return r.call(null, e) } catch (t) { return r.call(this, e) } } }(e) } } function h(e, t) { this.fun = e, this.array = t } function m() { } i.nextTick = function (e) { var t = new Array(arguments.length - 1); if (arguments.length > 1) for (var r = 1; r < arguments.length; r++)t[r - 1] = arguments[r]; c.push(new h(e, t)), 1 !== c.length || d || a(p) }, h.prototype.run = function () { this.fun.apply(null, this.array) }, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = m, i.addListener = m, i.once = m, i.off = m, i.removeListener = m, i.removeAllListeners = m, i.emit = m, i.prependListener = m, i.prependOnceListener = m, i.listeners = function (e) { return [] }, i.binding = function (e) { throw new Error("process.binding is not supported") }, i.cwd = function () { return "/" }, i.chdir = function (e) { throw new Error("process.chdir is not supported") }, i.umask = function () { return 0 } }, 232: function (e, t, r) { var i; !function (n, o) { "use strict"; var a = "function", s = "undefined", c = "object", d = "string", l = "major", u = "model", p = "name", h = "type", m = "vendor", f = "version", g = "architecture", y = "console", w = "mobile", v = "tablet", b = "smarttv", E = "wearable", T = "embedded", _ = "Amazon", k = "Apple", C = "ASUS", M = "BlackBerry", R = "Browser", P = "Chrome", I = "Firefox", x = "Google", N = "Huawei", A = "LG", O = "Microsoft", D = "Motorola", S = "Opera", j = "Samsung", F = "Sharp", L = "Sony", W = "Xiaomi", Y = "Zebra", U = "Facebook", $ = "Chromium OS", q = "Mac OS", V = function (e) { for (var t = {}, r = 0; r < e.length; r++)t[e[r].toUpperCase()] = e[r]; return t }, z = function (e, t) { return typeof e === d && -1 !== K(t).indexOf(K(e)) }, K = function (e) { return e.toLowerCase() }, B = function (e, t) { if (typeof e === d) return e = e.replace(/^\s\s*/, ""), typeof t === s ? e : e.substring(0, 500) }, G = function (e, t) { for (var r, i, n, s, d, l, u = 0; u < t.length && !d;) { var p = t[u], h = t[u + 1]; for (r = i = 0; r < p.length && !d && p[r];)if (d = p[r++].exec(e)) for (n = 0; n < h.length; n++)l = d[++i], typeof (s = h[n]) === c && s.length > 0 ? 2 === s.length ? typeof s[1] == a ? this[s[0]] = s[1].call(this, l) : this[s[0]] = s[1] : 3 === s.length ? typeof s[1] !== a || s[1].exec && s[1].test ? this[s[0]] = l ? l.replace(s[1], s[2]) : o : this[s[0]] = l ? s[1].call(this, l, s[2]) : o : 4 === s.length && (this[s[0]] = l ? s[3].call(this, l.replace(s[1], s[2])) : o) : this[s] = l || o; u += 2 } }, H = function (e, t) { for (var r in t) if (typeof t[r] === c && t[r].length > 0) { for (var i = 0; i < t[r].length; i++)if (z(t[r][i], e)) return "?" === r ? o : r } else if (z(t[r], e)) return "?" === r ? o : r; return e }, X = { ME: "4.90", "NT 3.11": "NT3.51", "NT 4.0": "NT4.0", 2e3: "NT 5.0", XP: ["NT 5.1", "NT 5.2"], Vista: "NT 6.0", 7: "NT 6.1", 8: "NT 6.2", 8.1: "NT 6.3", 10: ["NT 6.4", "NT 10.0"], RT: "ARM" }, J = { browser: [[/\b(?:crmo|crios)\/([\w\.]+)/i], [f, [p, "Chrome"]], [/edg(?:e|ios|a)?\/([\w\.]+)/i], [f, [p, "Edge"]], [/(opera mini)\/([-\w\.]+)/i, /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i], [p, f], [/opios[\/ ]+([\w\.]+)/i], [f, [p, S + " Mini"]], [/\bopr\/([\w\.]+)/i], [f, [p, S]], [/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i], [f, [p, "Baidu"]], [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, /(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i, /(?:ms|\()(ie) ([\w\.]+)/i, /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, /(heytap|ovi)browser\/([\d\.]+)/i, /(weibo)__([\d\.]+)/i], [p, f], [/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i], [f, [p, "UC" + R]], [/microm.+\bqbcore\/([\w\.]+)/i, /\bqbcore\/([\w\.]+).+microm/i, /micromessenger\/([\w\.]+)/i], [f, [p, "WeChat"]], [/konqueror\/([\w\.]+)/i], [f, [p, "Konqueror"]], [/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i], [f, [p, "IE"]], [/ya(?:search)?browser\/([\w\.]+)/i], [f, [p, "Yandex"]], [/slbrowser\/([\w\.]+)/i], [f, [p, "Smart Lenovo " + R]], [/(avast|avg)\/([\w\.]+)/i], [[p, /(.+)/, "$1 Secure " + R], f], [/\bfocus\/([\w\.]+)/i], [f, [p, I + " Focus"]], [/\bopt\/([\w\.]+)/i], [f, [p, S + " Touch"]], [/coc_coc\w+\/([\w\.]+)/i], [f, [p, "Coc Coc"]], [/dolfin\/([\w\.]+)/i], [f, [p, "Dolphin"]], [/coast\/([\w\.]+)/i], [f, [p, S + " Coast"]], [/miuibrowser\/([\w\.]+)/i], [f, [p, "MIUI " + R]], [/fxios\/([-\w\.]+)/i], [f, [p, I]], [/\bqihu|(qi?ho?o?|360)browser/i], [[p, "360 " + R]], [/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i], [[p, /(.+)/, "$1 " + R], f], [/samsungbrowser\/([\w\.]+)/i], [f, [p, j + " Internet"]], [/(comodo_dragon)\/([\w\.]+)/i], [[p, /_/g, " "], f], [/metasr[\/ ]?([\d\.]+)/i], [f, [p, "Sogou Explorer"]], [/(sogou)mo\w+\/([\d\.]+)/i], [[p, "Sogou Mobile"], f], [/(electron)\/([\w\.]+) safari/i, /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, /m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i], [p, f], [/(lbbrowser)/i, /\[(linkedin)app\]/i], [p], [/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i], [[p, U], f], [/(Klarna)\/([\w\.]+)/i, /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, /safari (line)\/([\w\.]+)/i, /\b(line)\/([\w\.]+)\/iab/i, /(alipay)client\/([\w\.]+)/i, /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i], [p, f], [/\bgsa\/([\w\.]+) .*safari\//i], [f, [p, "GSA"]], [/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i], [f, [p, "TikTok"]], [/headlesschrome(?:\/([\w\.]+)| )/i], [f, [p, P + " Headless"]], [/ wv\).+(chrome)\/([\w\.]+)/i], [[p, P + " WebView"], f], [/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i], [f, [p, "Android " + R]], [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i], [p, f], [/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i], [f, [p, "Mobile Safari"]], [/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i], [f, p], [/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i], [p, [f, H, { "1.0": "/8", 1.2: "/1", 1.3: "/3", "2.0": "/412", "2.0.2": "/416", "2.0.3": "/417", "2.0.4": "/419", "?": "/" }]], [/(webkit|khtml)\/([\w\.]+)/i], [p, f], [/(navigator|netscape\d?)\/([-\w\.]+)/i], [[p, "Netscape"], f], [/mobile vr; rv:([\w\.]+)\).+firefox/i], [f, [p, I + " Reality"]], [/ekiohf.+(flow)\/([\w\.]+)/i, /(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, /(firefox)\/([\w\.]+)/i, /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, /(links) \(([\w\.]+)/i, /panasonic;(viera)/i], [p, f], [/(cobalt)\/([\w\.]+)/i], [p, [f, /master.|lts./, ""]]], cpu: [[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i], [[g, "amd64"]], [/(ia32(?=;))/i], [[g, K]], [/((?:i[346]|x)86)[;\)]/i], [[g, "ia32"]], [/\b(aarch64|arm(v?8e?l?|_?64))\b/i], [[g, "arm64"]], [/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i], [[g, "armhf"]], [/windows (ce|mobile); ppc;/i], [[g, "arm"]], [/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i], [[g, /ower/, "", K]], [/(sun4\w)[;\)]/i], [[g, "sparc"]], [/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i], [[g, K]]], device: [[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i], [u, [m, j], [h, v]], [/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, /samsung[- ]([-\w]+)/i, /sec-(sgh\w+)/i], [u, [m, j], [h, w]], [/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i], [u, [m, k], [h, w]], [/\((ipad);[-\w\),; ]+apple/i, /applecoremedia\/[\w\.]+ \((ipad)/i, /\b(ipad)\d\d?,\d\d?[;\]].+ios/i], [u, [m, k], [h, v]], [/(macintosh);/i], [u, [m, k]], [/\b(sh-?[altvz]?\d\d[a-ekm]?)/i], [u, [m, F], [h, w]], [/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i], [u, [m, N], [h, v]], [/(?:huawei|honor)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i], [u, [m, N], [h, w]], [/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i, /\b; (\w+) build\/hm\1/i, /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i, /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i], [[u, /_/g, " "], [m, W], [h, w]], [/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i], [[u, /_/g, " "], [m, W], [h, v]], [/; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i], [u, [m, "OPPO"], [h, w]], [/vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i], [u, [m, "Vivo"], [h, w]], [/\b(rmx[1-3]\d{3})(?: bui|;|\))/i], [u, [m, "Realme"], [h, w]], [/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, /\bmot(?:orola)?[- ](\w*)/i, /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i], [u, [m, D], [h, w]], [/\b(mz60\d|xoom[2 ]{0,2}) build\//i], [u, [m, D], [h, v]], [/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i], [u, [m, A], [h, v]], [/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, /\blg-?([\d\w]+) bui/i], [u, [m, A], [h, w]], [/(ideatab[-\w ]+)/i, /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i], [u, [m, "Lenovo"], [h, v]], [/(?:maemo|nokia).*(n900|lumia \d+)/i, /nokia[-_ ]?([-\w\.]*)/i], [[u, /_/g, " "], [m, "Nokia"], [h, w]], [/(pixel c)\b/i], [u, [m, x], [h, v]], [/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i], [u, [m, x], [h, w]], [/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i], [u, [m, L], [h, w]], [/sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i], [[u, "Xperia Tablet"], [m, L], [h, v]], [/ (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i], [u, [m, "OnePlus"], [h, w]], [/(alexa)webm/i, /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, /(kf[a-z]+)( bui|\)).+silk\//i], [u, [m, _], [h, v]], [/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i], [[u, /(.+)/g, "Fire Phone $1"], [m, _], [h, w]], [/(playbook);[-\w\),; ]+(rim)/i], [u, m, [h, v]], [/\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i], [u, [m, M], [h, w]], [/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i], [u, [m, C], [h, v]], [/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i], [u, [m, C], [h, w]], [/(nexus 9)/i], [u, [m, "HTC"], [h, v]], [/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i], [m, [u, /_/g, " "], [h, w]], [/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i], [u, [m, "Acer"], [h, v]], [/droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i], [u, [m, "Meizu"], [h, w]], [/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i], [u, [m, "Ulefone"], [h, w]], [/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i, /(hp) ([\w ]+\w)/i, /(asus)-?(\w+)/i, /(microsoft); (lumia[\w ]+)/i, /(lenovo)[-_ ]?([-\w]+)/i, /(jolla)/i, /(oppo) ?([\w ]+) bui/i], [m, u, [h, w]], [/(kobo)\s(ereader|touch)/i, /(archos) (gamepad2?)/i, /(hp).+(touchpad(?!.+tablet)|tablet)/i, /(kindle)\/([\w\.]+)/i, /(nook)[\w ]+build\/(\w+)/i, /(dell) (strea[kpr\d ]*[\dko])/i, /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, /(trinity)[- ]*(t\d{3}) bui/i, /(gigaset)[- ]+(q\w{1,9}) bui/i, /(vodafone) ([\w ]+)(?:\)| bui)/i], [m, u, [h, v]], [/(surface duo)/i], [u, [m, O], [h, v]], [/droid [\d\.]+; (fp\du?)(?: b|\))/i], [u, [m, "Fairphone"], [h, w]], [/(u304aa)/i], [u, [m, "AT&T"], [h, w]], [/\bsie-(\w*)/i], [u, [m, "Siemens"], [h, w]], [/\b(rct\w+) b/i], [u, [m, "RCA"], [h, v]], [/\b(venue[\d ]{2,7}) b/i], [u, [m, "Dell"], [h, v]], [/\b(q(?:mv|ta)\w+) b/i], [u, [m, "Verizon"], [h, v]], [/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i], [u, [m, "Barnes & Noble"], [h, v]], [/\b(tm\d{3}\w+) b/i], [u, [m, "NuVision"], [h, v]], [/\b(k88) b/i], [u, [m, "ZTE"], [h, v]], [/\b(nx\d{3}j) b/i], [u, [m, "ZTE"], [h, w]], [/\b(gen\d{3}) b.+49h/i], [u, [m, "Swiss"], [h, w]], [/\b(zur\d{3}) b/i], [u, [m, "Swiss"], [h, v]], [/\b((zeki)?tb.*\b) b/i], [u, [m, "Zeki"], [h, v]], [/\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i], [[m, "Dragon Touch"], u, [h, v]], [/\b(ns-?\w{0,9}) b/i], [u, [m, "Insignia"], [h, v]], [/\b((nxa|next)-?\w{0,9}) b/i], [u, [m, "NextBook"], [h, v]], [/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i], [[m, "Voice"], u, [h, w]], [/\b(lvtel\-)?(v1[12]) b/i], [[m, "LvTel"], u, [h, w]], [/\b(ph-1) /i], [u, [m, "Essential"], [h, w]], [/\b(v(100md|700na|7011|917g).*\b) b/i], [u, [m, "Envizen"], [h, v]], [/\b(trio[-\w\. ]+) b/i], [u, [m, "MachSpeed"], [h, v]], [/\btu_(1491) b/i], [u, [m, "Rotor"], [h, v]], [/(shield[\w ]+) b/i], [u, [m, "Nvidia"], [h, v]], [/(sprint) (\w+)/i], [m, u, [h, w]], [/(kin\.[onetw]{3})/i], [[u, /\./g, " "], [m, O], [h, w]], [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i], [u, [m, Y], [h, v]], [/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i], [u, [m, Y], [h, w]], [/smart-tv.+(samsung)/i], [m, [h, b]], [/hbbtv.+maple;(\d+)/i], [[u, /^/, "SmartTV"], [m, j], [h, b]], [/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i], [[m, A], [h, b]], [/(apple) ?tv/i], [m, [u, k + " TV"], [h, b]], [/crkey/i], [[u, P + "cast"], [m, x], [h, b]], [/droid.+aft(\w+)( bui|\))/i], [u, [m, _], [h, b]], [/\(dtv[\);].+(aquos)/i, /(aquos-tv[\w ]+)\)/i], [u, [m, F], [h, b]], [/(bravia[\w ]+)( bui|\))/i], [u, [m, L], [h, b]], [/(mitv-\w{5}) bui/i], [u, [m, W], [h, b]], [/Hbbtv.*(technisat) (.*);/i], [m, u, [h, b]], [/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i], [[m, B], [u, B], [h, b]], [/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i], [[h, b]], [/(ouya)/i, /(nintendo) ([wids3utch]+)/i], [m, u, [h, y]], [/droid.+; (shield) bui/i], [u, [m, "Nvidia"], [h, y]], [/(playstation [345portablevi]+)/i], [u, [m, L], [h, y]], [/\b(xbox(?: one)?(?!; xbox))[\); ]/i], [u, [m, O], [h, y]], [/((pebble))app/i], [m, u, [h, E]], [/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i], [u, [m, k], [h, E]], [/droid.+; (glass) \d/i], [u, [m, x], [h, E]], [/droid.+; (wt63?0{2,3})\)/i], [u, [m, Y], [h, E]], [/(quest( 2| pro)?)/i], [u, [m, U], [h, E]], [/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i], [m, [h, T]], [/(aeobc)\b/i], [u, [m, _], [h, T]], [/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i], [u, [h, w]], [/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i], [u, [h, v]], [/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i], [[h, v]], [/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i], [[h, w]], [/(android[-\w\. ]{0,9});.+buil/i], [u, [m, "Generic"]]], engine: [[/windows.+ edge\/([\w\.]+)/i], [f, [p, "EdgeHTML"]], [/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i], [f, [p, "Blink"]], [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, /ekioh(flow)\/([\w\.]+)/i, /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, /(icab)[\/ ]([23]\.[\d\.]+)/i, /\b(libweb)/i], [p, f], [/rv\:([\w\.]{1,9})\b.+(gecko)/i], [f, p]], os: [[/microsoft (windows) (vista|xp)/i], [p, f], [/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i], [p, [f, H, X]], [/windows nt 6\.2; (arm)/i, /windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i, /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i], [[f, H, X], [p, "Windows"]], [/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i, /cfnetwork\/.+darwin/i], [[f, /_/g, "."], [p, "iOS"]], [/(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i], [[p, q], [f, /_/g, "."]], [/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i], [f, p], [/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, /(blackberry)\w*\/([\w\.]*)/i, /(tizen|kaios)[\/ ]([\w\.]+)/i, /\((series40);/i], [p, f], [/\(bb(10);/i], [f, [p, M]], [/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i], [f, [p, "Symbian"]], [/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i], [f, [p, I + " OS"]], [/web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i], [f, [p, "webOS"]], [/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i], [f, [p, "watchOS"]], [/crkey\/([\d\.]+)/i], [f, [p, P + "cast"]], [/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i], [[p, $], f], [/panasonic;(viera)/i, /(netrange)mmh/i, /(nettv)\/(\d+\.[\w\.]+)/i, /(nintendo|playstation) ([wids345portablevuch]+)/i, /(xbox); +xbox ([^\);]+)/i, /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, /(mint)[\/\(\) ]?(\w*)/i, /(mageia|vectorlinux)[; ]/i, /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, /(hurd|linux) ?([\w\.]*)/i, /(gnu) ?([\w\.]*)/i, /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, /(haiku) (\w+)/i], [p, f], [/(sunos) ?([\w\.\d]*)/i], [[p, "Solaris"], f], [/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, /(unix) ?([\w\.]*)/i], [p, f]] }, Z = function (e, t) { if (typeof e === c && (t = e, e = o), !(this instanceof Z)) return new Z(e, t).getResult(); var r = typeof n !== s && n.navigator ? n.navigator : o, i = e || (r && r.userAgent ? r.userAgent : ""), y = r && r.userAgentData ? r.userAgentData : o, b = t ? function (e, t) { var r = {}; for (var i in e) t[i] && t[i].length % 2 == 0 ? r[i] = t[i].concat(e[i]) : r[i] = e[i]; return r }(J, t) : J, E = r && r.userAgent == i; return this.getBrowser = function () { var e, t = {}; return t[p] = o, t[f] = o, G.call(t, i, b.browser), t[l] = typeof (e = t[f]) === d ? e.replace(/[^\d\.]/g, "").split(".")[0] : o, E && r && r.brave && typeof r.brave.isBrave == a && (t[p] = "Brave"), t }, this.getCPU = function () { var e = {}; return e[g] = o, G.call(e, i, b.cpu), e }, this.getDevice = function () { var e = {}; return e[m] = o, e[u] = o, e[h] = o, G.call(e, i, b.device), E && !e[h] && y && y.mobile && (e[h] = w), E && "Macintosh" == e[u] && r && typeof r.standalone !== s && r.maxTouchPoints && r.maxTouchPoints > 2 && (e[u] = "iPad", e[h] = v), e }, this.getEngine = function () { var e = {}; return e[p] = o, e[f] = o, G.call(e, i, b.engine), e }, this.getOS = function () { var e = {}; return e[p] = o, e[f] = o, G.call(e, i, b.os), E && !e[p] && y && "Unknown" != y.platform && (e[p] = y.platform.replace(/chrome os/i, $).replace(/macos/i, q)), e }, this.getResult = function () { return { ua: this.getUA(), browser: this.getBrowser(), engine: this.getEngine(), os: this.getOS(), device: this.getDevice(), cpu: this.getCPU() } }, this.getUA = function () { return i }, this.setUA = function (e) { return i = typeof e === d && e.length > 500 ? B(e, 500) : e, this }, this.setUA(i), this }; Z.VERSION = "1.0.37", Z.BROWSER = V([p, f, l]), Z.CPU = V([g]), Z.DEVICE = V([u, m, h, y, w, b, v, E, T]), Z.ENGINE = Z.OS = V([p, f]), typeof t !== s ? (e.exports && (t = e.exports = Z), t.UAParser = Z) : r.amdO ? (i = function () { return Z }.call(t, r, t, e)) === o || (e.exports = i) : typeof n !== s && (n.UAParser = Z); var Q = typeof n !== s && (n.jQuery || n.Zepto); if (Q && !Q.ua) { var ee = new Z; Q.ua = ee.getResult(), Q.ua.get = function () { return ee.getUA() }, Q.ua.set = function (e) { ee.setUA(e); var t = ee.getResult(); for (var r in t) Q.ua[r] = t[r] } } }("object" == typeof window ? window : this) } }, r = {}; function i(e) { var n = r[e]; if (void 0 !== n) return n.exports; var o = r[e] = { exports: {} }; return t[e].call(o.exports, o, o.exports, i), o.exports } i.amdO = {}, i.n = e => { var t = e && e.__esModule ? () => e.default : () => e; return i.d(t, { a: t }), t }, i.d = (e, t) => { for (var r in t) i.o(t, r) && !i.o(e, r) && Object.defineProperty(e, r, { enumerable: !0, get: t[r] }) }, i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), [Element.prototype, CharacterData.prototype, DocumentType.prototype].forEach((function (e) { e.hasOwnProperty("remove") || Object.defineProperty(e, "remove", { configurable: !0, enumerable: !0, writable: !0, value: function () { this.parentNode.removeChild(this) } }) })), [Element.prototype, Document.prototype, DocumentFragment.prototype].forEach((function (e) { e.hasOwnProperty("append") || Object.defineProperty(e, "append", { configurable: !0, enumerable: !0, writable: !0, value: function () { var e = Array.prototype.slice.call(arguments), t = document.createDocumentFragment(); e.forEach((function (e) { var r = e instanceof Node; t.appendChild(r ? e : document.createTextNode(String(e))) })), this.appendChild(t) } }) })), [Element.prototype, CharacterData.prototype, DocumentType.prototype].forEach((function (e) { e.hasOwnProperty("remove") || Object.defineProperty(e, "remove", { configurable: !0, enumerable: !0, writable: !0, value: function () { this.parentNode.removeChild(this) } }) })), [Element.prototype, Document.prototype, DocumentFragment.prototype].forEach((function (e) { e.hasOwnProperty("append") || Object.defineProperty(e, "append", { configurable: !0, enumerable: !0, writable: !0, value: function () { var e = Array.prototype.slice.call(arguments), t = document.createDocumentFragment(); e.forEach((function (e) { var r = e instanceof Node; t.appendChild(r ? e : document.createTextNode(String(e))) })), this.appendChild(t) } }) })), Math.asinh || (Math.asinh = function (e) { var t = Math.abs(e); if (t < 3.725290298461914e-9) return e; if (t > 268435456) i = Math.log(t) + Math.LN2; else if (t > 2) i = Math.log(2 * t + 1 / (Math.sqrt(e * e + 1) + t)); else var r = e * e, i = Math.log1p(t + r / (1 + Math.sqrt(1 + r))); return e > 0 ? i : -i }), Math.log1p = Math.log1p || function (e) { if ((e = Number(e)) < -1 || e != e) return NaN; if (0 === e || e === 1 / 0) return e; var t = e + 1 - 1; return 0 === t ? e : e * (Math.log(e + 1) / t) }, Math.expm1 = Math.expm1 || function (e) { return Math.exp(e) - 1 }, Math.cbrt || (Math.cbrt = (e = Math.pow, function (t) { return t < 0 ? -e(-t, 1 / 3) : e(t, 1 / 3) })), Math.sinh = Math.sinh || function (e) { var t = Math.exp(e); return (t - 1 / t) / 2 }, Math.cosh = Math.cosh || function (e) { var t = Math.exp(e); return (t + 1 / t) / 2 }, Math.tanh = Math.tanh || function (e) { var t = Math.exp(+e), r = Math.exp(-e); return t == 1 / 0 ? 1 : r == 1 / 0 ? -1 : (t - r) / (t + r) }, window.crypto = window.crypto || window.msCrypto, function (e) { function t(e, t, r) { throw new e("Failed to execute 'requestSubmit' on 'HTMLFormElement': " + t + ".", r) } "function" != typeof e.requestSubmit && (e.requestSubmit = function (e) { e ? (function (e, r) { e instanceof HTMLElement || t(TypeError, "parameter 1 is not of type 'HTMLElement'"), "submit" == e.type || t(TypeError, "The specified element is not a submit button"), e.form == r || t(DOMException, "The specified element is not owned by this form element", "NotFoundError") }(e, this), e.click()) : ((e = document.createElement("input")).type = "submit", e.hidden = !0, this.appendChild(e), e.click(), this.removeChild(e)) }) }(HTMLFormElement.prototype), (() => { "use strict"; var e = i(975); function t(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } const r = "2.0.0"; i.n(e)().resolve("/", "..", "dist"); let n = function (e) { return e[e["es-AR"] = 0] = "es-AR", e[e["es-CL"] = 1] = "es-CL", e[e["es-CO"] = 2] = "es-CO", e[e["es-MX"] = 3] = "es-MX", e[e["es-VE"] = 4] = "es-VE", e[e["es-UY"] = 5] = "es-UY", e[e["es-PE"] = 6] = "es-PE", e[e["pt-BR"] = 7] = "pt-BR", e[e["en-US"] = 8] = "en-US", e }({}), o = function (e) { return e.PRODUCT_ID_MOBILE = "BTR2NNPO1F60OR8RLSH0", e.PRODUCT_ID_DESKTOP = "BTR2N61O1F60OR8RLSGG", e.PRODUCT_ID_PAYMENT_BRICK_MOBILE = "CHQBURHMDARLP9CT19E0", e.PRODUCT_ID_PAYMENT_BRICK_DESKTOP = "CHQBUNESFQCVF58JFECG", e.PRODUCT_ID_CARD_PAYMENT_BRICK_MOBILE = "C85Q3OGS4G718CFJS270", e.PRODUCT_ID_CARD_PAYMENT_BRICK_DESKTOP = "C85Q6TGS4G718CFJS27G", e }({}); const a = ["gateway", "aggregator"], s = "aggregator"; class c { static setPublicKey(e) { this._publicKey = e } static setLocale(e) { this._locale = e } static setSiteId(e) { this._siteId = e } static setDeviceProfile(e) { this._deviceProfile = e } static setTrackingDisabled(e) { this._trackingDisabled = e } static setIframeEnabled(e) { this._iframeEnabled = e } static setFrontendStack(e) { this._frontendStack = e || "JS" } static setProductId(e) { this._product_id = e } static getPublicKey() { return this._publicKey } static getSiteId() { return this._siteId } static getLocale() { return this._locale } static getDeviceProfile() { return this._deviceProfile } static getTrackingDisabled() { return this._trackingDisabled } static getIframeEnabled() { return this._iframeEnabled } static getFrontendStack() { return this._frontendStack } static getProductId() { return this._product_id } } t(c, "_publicKey", void 0), t(c, "_siteId", void 0), t(c, "_locale", void 0), t(c, "_product_id", void 0), t(c, "_deviceProfile", void 0), t(c, "_trackingDisabled", void 0), t(c, "_iframeEnabled", void 0), t(c, "_frontendStack", "JS"); function d(e, t) { return t = t || {}, new Promise((function (r, i) { var n = new XMLHttpRequest, o = [], a = [], s = {}, c = function () { return { ok: 2 == (n.status / 100 | 0), statusText: n.statusText, status: n.status, url: n.responseURL, text: function () { return Promise.resolve(n.responseText) }, json: function () { return Promise.resolve(n.responseText).then(JSON.parse) }, blob: function () { return Promise.resolve(new Blob([n.response])) }, clone: c, headers: { keys: function () { return o }, entries: function () { return a }, get: function (e) { return s[e.toLowerCase()] }, has: function (e) { return e.toLowerCase() in s } } } }; for (var d in n.open(t.method || "get", e, !0), n.onload = function () { n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, (function (e, t, r) { o.push(t = t.toLowerCase()), a.push([t, r]), s[t] = s[t] ? s[t] + "," + r : r })), r(c()) }, n.onerror = i, n.withCredentials = "include" == t.credentials, t.headers) n.setRequestHeader(d, t.headers[d]); n.send(t.body || null) })) } const { protocol: l, hostname: u, port: p } = window.location, h = `${l}//${u}${p && ":" + p}`, m = e => Object.assign({ method: "GET", timeout: 2e3, retry: 3 }, e), f = async e => { let { fetchURL: t, restClientOptions: r } = e; const { retry: i, timeout: n } = r; let o = 0; do { const e = 2 ** o * n; o++; try { const i = await g({ fetchURL: t, restClientOptions: r, timeout: e }), { status: n, ok: o, headers: a, statusText: s } = i; if (!o) { const e = Boolean(a.get("content-type")?.includes("json")), { get: t } = a; if (e) { const e = { ...await i.json(), status: n, ok: o, getHeader: t }; return Promise.reject(e) } return Promise.reject({ message: s, status: n, ok: o, getHeader: t }) } return Promise.resolve(i) } catch (e) { if (e instanceof Error && "Request timed out" !== e.message || o <= 0) return Promise.reject(e) } } while (o < i); return Promise.reject() }, g = e => { let t, { fetchURL: r, restClientOptions: i, timeout: n } = e; const o = new Promise(((e, n) => d(r, i).then(e).catch(n).finally((() => clearTimeout(t))))), a = new Promise(((e, r) => t = setTimeout((() => r(new Error("Request timed out"))), n))); return Promise.race([o, a]) }; class y { static async fetch(e, t) { const i = m(t), n = (e => { let { endpoint: t, restClientOptions: i } = e; const n = new URL((i.baseURL || "https://api.mercadopago.com/v1") + t); return (e => { let { URLObject: t, restClientOptions: i } = e; (e => { e.searchParams.append("public_key", c.getPublicKey()), e.searchParams.append("locale", c.getLocale()), e.searchParams.append("js_version", r), e.searchParams.append("referer", h) })(t), (e => { let { URLObject: t, restClientOptions: r } = e; const i = r?.query; i && (Object.entries(i).forEach((e => { let [r, i] = e; return t.searchParams.append(r, i) })), delete r?.query) })({ URLObject: t, restClientOptions: i }) })({ URLObject: n, restClientOptions: i }), n.href })({ endpoint: e, restClientOptions: i }); return f({ fetchURL: n, restClientOptions: i }) } static async fetchPage(e, t) { const r = m(t), i = new URL(e).href; return f({ fetchURL: i, restClientOptions: r }) } } var w, v = new Uint8Array(16); function b() { if (!w && !(w = "undefined" != typeof crypto && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || "undefined" != typeof msCrypto && "function" == typeof msCrypto.getRandomValues && msCrypto.getRandomValues.bind(msCrypto))) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); return w(v) } const E = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; for (var T = [], _ = 0; _ < 256; ++_)T.push((_ + 256).toString(16).substr(1)); const k = function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, r = (T[e[t + 0]] + T[e[t + 1]] + T[e[t + 2]] + T[e[t + 3]] + "-" + T[e[t + 4]] + T[e[t + 5]] + "-" + T[e[t + 6]] + T[e[t + 7]] + "-" + T[e[t + 8]] + T[e[t + 9]] + "-" + T[e[t + 10]] + T[e[t + 11]] + T[e[t + 12]] + T[e[t + 13]] + T[e[t + 14]] + T[e[t + 15]]).toLowerCase(); if (!function (e) { return "string" == typeof e && E.test(e) }(r)) throw TypeError("Stringified UUID is invalid"); return r }, C = function (e, t, r) { var i = (e = e || {}).random || (e.rng || b)(); if (i[6] = 15 & i[6] | 64, i[8] = 63 & i[8] | 128, t) { r = r || 0; for (var n = 0; n < 16; ++n)t[r + n] = i[n]; return t } return k(i) }; class M { send(e, t) { return Promise.resolve() } addContext(e) { } } class R { sendErrorMetric(e) { return Promise.resolve() } sendPerformanceMetric(e) { return Promise.resolve() } } class P { static getValue(e) { return document.cookie.split(";").map((e => { const t = e.split("="); return [t[0], t[1]] })).filter((t => { let [r, i] = t; return r === e })).map((e => { let [t, r] = e; return r }))[0] } } const I = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : navigator.userAgent || navigator.vendor || window.opera; return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0, 4)) }; function x(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function N(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function A(e, t) { return e.get(D(e, t)) } function O(e, t, r) { return e.set(D(e, t), r), r } function D(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var S = new WeakMap, j = new WeakMap, F = new WeakMap, L = new WeakMap, W = new WeakMap, Y = new WeakMap, U = new WeakMap; class $ { constructor(e, t, r) { x(this, S, void 0), x(this, j, void 0), x(this, F, void 0), x(this, L, void 0), x(this, W, void 0), x(this, Y, void 0), x(this, U, void 0), O(S, this, e), O(j, this, t), O(F, this, r), O(L, this, this.getUidFromCookie()), O(W, this, c.getDeviceProfile()), O(Y, this, c.getPublicKey()), O(U, this, {}) } getUidFromCookie() { return P.getValue($.UID_COOKIE) || C() } buildEvent(e, t) { return { tracks: [{ path: e, type: t.type, user: { uid: A(L, this) }, id: C(), event_data: { ...t.event_data, ...A(U, this), ...A(W, this) && { device_profile_id: A(W, this) }, public_key: A(Y, this) }, application: { business: "mercadopago", site_id: A(F, this), version: A(j, this), app_name: A(S, this) }, device: { platform: "/web/" + (I() ? "mobile" : "desktop") } }] } } async postEvent(e) { const t = e.tracks[0]; try { const r = await d($.MELIDATA_API_URL, { method: "POST", body: JSON.stringify(e) }); r.ok || console.warn(t.path, `Could not send event id ${t.id}. Status: ${r.status}`) } catch (e) { console.warn(t.path, `Could not send event id ${t.id}. Error: ${e}`) } } async validateEvent(e) { try { const t = e.tracks[0]; await d($.MELIDATA_API_URL_VALIDATE, { method: "POST", body: JSON.stringify(t) }) } catch (t) { console.warn(e.tracks[0].path, `Could not send event id ${e.tracks[0].id}. Error: ${t}`) } } addContext(e) { O(U, this, Object.assign(A(U, this), e)) } async send(e, t) { const r = this.buildEvent(e, t); this.postEvent(r) } } N($, "UID_COOKIE", "_d2id"), N($, "MELIDATA_API_URL", "https://api.mercadolibre.com/tracks"), N($, "MELIDATA_API_URL_VALIDATE", "https://api.mercadolibre.com/melidata/catalog/validate"); var q = i(232), V = i.n(q); function z(e) { const t = V()(e); return `${t.browser.name ? `${t.browser.name} ${t.browser.version}` : "unknown"}${t.device.type ? ` (${t.device.type})` : ""}` } function K(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function B(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function G(e, t) { return e.get(X(e, t)) } function H(e, t, r) { return e.set(X(e, t), r), r } function X(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var J = new WeakMap, Z = new WeakMap, Q = new WeakMap, ee = new WeakMap; class te { constructor(e, t, r) { K(this, J, void 0), K(this, Z, void 0), K(this, Q, void 0), K(this, ee, void 0), H(J, this, e), H(Z, this, t), H(Q, this, r), H(ee, this, this.getDeviceUidFromCookie()) } async sendErrorMetric(e) { const t = this.buildErrorMetric(e); try { { const e = await d(te.FRONTEND_METRICS_API_BASE_URL + "/error-metric", { method: "POST", body: JSON.stringify(t), headers: { "Content-Type": "application/json" } }); if (!e.ok) { const t = await e.json(); throw new Error(`${e.status} - ${t}`) } } } catch (e) { const { name: r, version: i } = t.client, { name: n } = t.error; console.warn(`[${r}/${i}] Could not send error metric ${n}.`, e) } } async sendPerformanceMetric(e) { const t = this.buildPerformanceMetric(e); try { { const e = await d(te.FRONTEND_METRICS_API_BASE_URL + "/performance-metric", { method: "POST", body: JSON.stringify(t), headers: { "Content-Type": "application/json" } }); if (!e.ok) { const t = await e.json(); throw new Error(`${e.status} - ${t}`) } } } catch (e) { const { name: r, version: i } = t.client, { name: n } = t.event; console.warn(`[${r}/${i}] Could not send performance metric ${n}.`, e) } } getDeviceUidFromCookie() { return P.getValue(te.UID_COOKIE) || C() } getBaseMetricInfo() { return { client: { name: G(J, this), version: G(Z, this), platform: this.getClientPlatform(), technology: c.getFrontendStack(), scope: String("prod") }, site_id: G(Q, this) } } buildErrorMetric(e) { return { ...this.getBaseMetricInfo(), browser: { domain: window.location.origin, user_agent: z(navigator.userAgent) }, device: { uid: G(ee, this) }, error: e } } buildPerformanceMetric(e) { return e.timing = Number(e.timing.toFixed(2)), { ...this.getBaseMetricInfo(), browser: { domain: window.location.origin }, event: e } } getClientPlatform() { return I(navigator.userAgent) ? "mobile" : "desktop" } } function re(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function ie(e, t) { return e.get(oe(e, t)) } function ne(e, t, r) { return e.set(oe(e, t), r), r } function oe(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } B(te, "UID_COOKIE", "_d2id"), B(te, "FRONTEND_METRICS_API_BASE_URL", "https://api.mercadopago.com/op-frontend-metrics/v1"); var ae, se = new WeakMap, ce = new WeakMap; class de { constructor(e) { re(this, se, void 0), re(this, ce, void 0); const { appName: t, clientName: r = "", siteId: i, version: n } = e; c.getTrackingDisabled() ? (ne(se, this, new M), ne(ce, this, new R)) : (ne(se, this, new $(t, n, i)), ne(ce, this, new te(r, n, i))) } melidata() { return ie(se, this) } frontendMetrics() { return ie(ce, this) } } function le(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } class ue { } ae = ue, le(ue, "tracker", void 0), le(ue, "ERROR_TYPE_WARNING", "warning"), le(ue, "ERROR_TYPE_CRITICAL", "critical"), le(ue, "ERROR_TYPE_INTEGRATION", "integration"), le(ue, "TRACK_TYPE_VIEW", "VIEW"), le(ue, "TRACK_TYPE_EVENT", "EVENT"), le(ue, "init", (e => { let { version: t, siteId: r } = e; try { const e = { appName: "sdk_js", version: t || "", siteId: r }; ae.tracker = new de(e) } catch (e) { console.warn("Failed on init TrackerClient") } })), le(ue, "setContext", (e => { let { siteId: t, advancedFraudPrevention: r, locale: i, publicKey: n, version: o } = e; try { ae.tracker || ae.init({ version: o, siteId: t }), ae.tracker.melidata().addContext({ instance_id: C(), public_key: n, is_test_user: n.startsWith("TEST-"), locale: i || "", is_advanced_fraud_prevention_enabled: Boolean(r), user_agent: z(navigator.userAgent), hostname: h }) } catch { console.warn("Failed to set context on TrackerClient") } })), le(ue, "send", (e => { let { path: t, type: r, eventData: i } = e; try { ae.tracker && ae.tracker.melidata().send(`/checkout/api_integration${t}`, { type: r, event_data: i }) } catch { console.warn("Failed to send track on TrackerClient") } })), le(ue, "sendError", (e => { let { type: t, eventData: r } = e; try { ae.tracker && ae.tracker.melidata().send("/checkout/api_integration/error", { type: t, event_data: r }) } catch { console.warn("Failed to send track on TrackerClient") } })); const pe = ue; let he = {}; class me { static createContext(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (he[e]) { const t = `Context '${e}' already exists`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Context.createContext", reason: t } }), new Error(t) } return he[e] = new Map(Object.entries(t)), he[e] } static getContext(e) { return he[e] } static deleteContext(e) { delete he[e] } static destroyContexts() { he = {} } } const fe = e => { const t = I(); let r = t ? o.PRODUCT_ID_MOBILE : o.PRODUCT_ID_DESKTOP; return e === Jn.cardPayment ? r = t ? o.PRODUCT_ID_CARD_PAYMENT_BRICK_MOBILE : o.PRODUCT_ID_CARD_PAYMENT_BRICK_DESKTOP : e && Object.values(Jn).includes(e) && (r = t ? o.PRODUCT_ID_PAYMENT_BRICK_MOBILE : o.PRODUCT_ID_PAYMENT_BRICK_DESKTOP), r }; function ge(e) { let { cardNumber: t, cardId: r, cardholderName: i, identificationType: n, identificationNumber: o, securityCode: a, cardExpirationMonth: s, cardExpirationYear: d } = e; const l = r ? { card_id: r, security_code: a } : { card_number: t, cardholder: { name: i, identification: { type: n, number: o } }, security_code: a, expiration_month: parseInt(s, 10), expiration_year: parseInt(d, 10) }, u = c.getDeviceProfile(); return u && (l.device = { meli: { session_id: u } }), l } function ye(e) { let { securityCode: t, cardExpirationMonth: r, cardExpirationYear: i } = e; const n = { security_code: t, expiration_month: parseInt(r, 10), expiration_year: parseInt(i, 10) }, o = c.getDeviceProfile(); return o && (n.device = { meli: { session_id: o } }), n } const we = class { getIdentificationTypes() { return (async () => { const e = await y.fetch("/identification_types"); return await e.json() })() } getInstallments(e) { return (async e => { const t = await y.fetch("/payment_methods/installments", { method: "GET", query: { ...e } }); return await t.json() })(e) } getPaymentMethods(e) { return (async e => { const t = await y.fetch("/payment_methods/search", { method: "GET", query: { marketplace: "NONE", status: "active", product_id: c.getProductId(), ...e } }); return await t.json() })(e) } getIssuers(e) { return (async e => { const t = await y.fetch("/payment_methods/card_issuers", { method: "GET", query: e }); return await t.json() })(e) } createCardToken(e) { return (async e => { const t = await y.fetch("/card_tokens", { method: "POST", headers: { "X-Product-Id": c.getProductId() }, body: JSON.stringify(ge(e)) }); return await t.json() })(e) } updateCardToken(e) { return (async e => { const { securityCode: t, cardExpirationMonth: r, cardExpirationYear: i, token: n } = e, o = await y.fetch(`/card_tokens/${n}`, { method: "PUT", headers: { "X-Product-Id": c.getProductId() }, body: JSON.stringify(ye({ securityCode: t, cardExpirationMonth: r, cardExpirationYear: i })) }); return await o.json() })(e) } }, ve = "MPHiddenInput", be = { TOKEN: "token", PAYMENT_METHOD: "paymentMethod", PROCESSING_MODE: "processingMode", MERCHANT_ACCOUNT_ID: "merchantAccountId" }, Ee = ["credit_card", "debit_card"], Te = [{ path: "root", name: "amount", type: "string", required: !0, isAllowed: () => !0, isDOMElement: !1 }, { path: "root", name: "autoMount", type: "boolean", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "root", name: "processingMode", type: "string", acceptedValues: a, required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "form", name: "id", type: "string", required: !0, isAllowed: () => !0, isDOMElement: !0, tagName: ["FORM", "DIV"] }, { path: "form", name: "cardNumber", type: "string", required: !0, isAllowed: () => !0, isDOMElement: !0, tagName: ["INPUT", "DIV"], pci: !0 }, { path: "form", name: "securityCode", type: "string", required: !1, isAllowed: () => !0, isDOMElement: !0, tagName: ["INPUT", "DIV"], pci: !0 }, { path: "form", name: "cardExpirationMonth", type: "string", required: !0, isAllowed: e => !e.form.cardExpirationDate, isDOMElement: !0, tagName: ["INPUT", "SELECT", "DIV"], pci: !0 }, { path: "form", name: "cardExpirationYear", type: "string", required: !0, isAllowed: e => !e.form.cardExpirationDate, isDOMElement: !0, tagName: ["INPUT", "SELECT", "DIV"], pci: !0 }, { path: "form", name: "cardExpirationDate", type: "string", required: !0, isAllowed: e => !(e.form.cardExpirationMonth || e.form.cardExpirationYear), isDOMElement: !0, tagName: ["INPUT", "SELECT", "DIV"], pci: !0 }, { path: "form", name: "cardholderName", type: "string", required: !0, isAllowed: () => !0, isDOMElement: !0, tagName: ["INPUT"] }, { path: "form", name: "cardholderEmail", type: "string", required: !1, isAllowed: () => !0, isDOMElement: !0, tagName: ["INPUT"] }, { path: "form", name: "installments", type: "string", required: !0, isAllowed: () => !0, isDOMElement: !0, tagName: ["SELECT"] }, { path: "form", name: "issuer", type: "string", required: !0, isAllowed: () => !0, isDOMElement: !0, tagName: ["SELECT"], pci: !0 }, { path: "form", name: "cardholderIdentificationType", type: "string", required: !1, isAllowed: () => !0, isDOMElement: !0, tagName: ["SELECT"] }, { path: "form", name: "cardholderIdentificationNumber", type: "string", required: !1, isAllowed: () => !0, isDOMElement: !0, tagName: ["INPUT"] }, { path: "callbacks", name: "onFormMounted", type: "function", required: !0, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onIdentificationTypesReceived", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onPaymentMethodsReceived", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onInstallmentsReceived", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onCardTokenReceived", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onIssuersReceived", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onFormUnmounted", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onSubmit", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onFetching", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onReady", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onValidityChange", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }, { path: "callbacks", name: "onError", type: "function", required: !1, isAllowed: () => !0, isDOMElement: !1 }], _e = Te.filter((e => { let { isDOMElement: t } = e; return t })), ke = e => e.charAt(0).toUpperCase() + e.slice(1), Ce = (e, t) => { const r = _e.find((t => { let { name: r } = t; return ("id" === r ? "form" : r) === e })), i = document.getElementById(t); if (!i) { const e = `MercadoPago.js - Could not find HTML element for provided id: ${t}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "domHelper.getHTMLElementFrom", reason: e } }), new Error(e) } const n = r?.tagName; if (n && !n.includes(i.tagName)) { const t = `MercadoPago.js - ${e}: wrong HTML Element type: expected ${n.join(" or ")}. Received ${i.tagName}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "domHelper.getHTMLElementFrom", reason: t } }), new Error(t) } const o = r?.pci, a = i.getAttribute("name"); return o && a && (i.setAttribute("data-name", a), i.removeAttribute("name"), i.setAttribute("autocomplete", "off")), i }, Me = e => { const t = [...e?.children]; t?.forEach((e => e.remove())) }, Re = e => { const t = me.getContext("formMap"); return e.map((e => { const r = t?.get(e)?.element; return r?.value })) }, Pe = (e, t) => { const r = me.getContext("formMap"), i = r?.get(e)?.element; i?.setAttribute("value", t) }, Ie = function (e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""; const r = document.createElement("option"); r.textContent = t, r.dataset.placeholder = "", r.setAttribute("selected", ""), r.setAttribute("disabled", ""), e.appendChild(r) }, xe = e => { const t = (e = ii(ri(e))).length, r = me.getContext("bin"), i = r.get("bin")?.bin, n = me.getContext("customCallbacks").get("onBinChange"), [o] = Re(["paymentMethods"]); if (t < 8 && o) { const t = me.getContext("cardSettings"), i = me.getContext("formMap"), o = i.get("installments"), a = i.get("issuer"), { element: s, placeholder: c } = o, { element: d, placeholder: l } = a; return Pe("paymentMethods", ""), Pe("merchantAccountId", ""), Me(s), Ie(s, c), Me(d), Ie(d, l), t.delete("additional_info_needed"), t.delete("security_code"), t.delete("card_number"), r.set("bin", { bin: e }), void n?.(e) } if (t >= 8 && e !== i) { const e = me.getContext("cardFormModules").get("getPaymentMethods"); e?.() } r.set("bin", { bin: e }), n?.(e) }, Ne = {}, Ae = (e, t) => { const r = Ne[e]; r && clearTimeout(r), Ne[e] = setTimeout((() => { t() }), 500) }; let Oe; const De = (e, t) => { const r = Zr({ field: t, value: e }); return r.length ? r : void 0 }, Se = (e, t) => { Oe = me.getContext("customCallbacks"); const r = Oe?.get("onValidityChange"); r?.(e, t) }, je = { form: [{ event: ["select", "copy", "cut", "drop", "drag"], fn: e => e.preventDefault() }, { event: ["submit"], fn: async e => { const t = (() => { const e = me.getContext("cardFormOptions"), t = me.getContext("formMap"), r = e?.get("amount"), i = t?.get("form"), n = document.createElement("input"); return n.setAttribute("type", "hidden"), n.setAttribute("name", `${ve}Amount`), n.setAttribute("value", r), i.element?.appendChild(n), () => n.remove() })(); try { const [t] = Re(["token"]); if (!t) { e.preventDefault(); const t = me.getContext("cardFormModules").get("createCardToken"); return await (t?.()), e.target.requestSubmit() } } catch (e) { return console.warn("MercadoPago.js - Form could not be submitted: ", e) } finally { t() } Oe = me.getContext("customCallbacks"); const r = Oe?.get("onSubmit"); r?.(e) } }], cardNumber: [{ event: ["input"], fn: e => Ae("cardNumber", (async () => { const t = e.target, { value: r = "" } = t, i = me.getContext("cardFormModules").get("setBin"); i?.(r), xe(r) })) }, { event: ["input"], fn: e => Ae("cardNumber-validityChange", (() => { if (!e.isTrusted) return; const t = e.target.value, r = De(t, "cardNumber"); Se(r, "cardNumber") })) }], cardExpirationDate: [{ event: ["input"], fn: e => { !function (e) { const t = e.target, r = t.value.length, i = t.selectionStart || 0; !function (e) { let { maskedValue: t, currentValueLength: r, target: i, cursorIndex: n } = e; const o = t.length - r; i.setSelectionRange(n + o, n + o) }({ maskedValue: Fe(t), currentValueLength: r, target: t, cursorIndex: i }) }(e) } }, { event: ["input"], fn: e => Ae("cardExpirationDate", (() => { const t = e.target.value, [r, i] = t.split("/"), n = De(r, "cardExpirationMonth"), o = De(i, "cardExpirationYear"); if (!n && !o) return void Se(n, "cardExpirationDate"); const a = me.getContext("expirationFields").has("expirationDate") ? "expirationDate" : "cardExpirationDate"; let s = []; s = n ? [...s, ...n] : s, s = o ? [...s, ...o] : s, Se(s, a) })) }], cardholderName: [{ event: ["input"], fn: e => Ae("cardholderName", (() => { const t = e.target.value, r = De(t, "cardholderName"); Se(r, "cardholderName") })) }], cardholderEmail: [{ event: ["input"], fn: e => Ae("cardholderEmail", (() => { const t = e.target.value, r = De(t, "cardholderEmail"); Se(r, "cardholderEmail") })) }], securityCode: [{ event: ["input"], fn: e => Ae("securityCode", (() => { const t = e.target.value, r = De(t, "securityCode"); Se(r, "securityCode") })) }], cardExpirationMonth: [{ event: ["input"], fn: e => Ae("cardExpirationMonth", (() => { const t = e.target.value, r = me.getContext("expirationFields").has("expirationMonth") ? "expirationMonth" : "cardExpirationMonth", i = De(t, "cardExpirationMonth"); Se(i, r) })) }], cardExpirationYear: [{ event: ["input"], fn: e => Ae("cardExpirationYear", (() => { const t = e.target.value, r = me.getContext("expirationFields").has("expirationYear") ? "expirationYear" : "cardExpirationYear", i = De(t, "cardExpirationYear"); Se(i, r) })) }], identificationNumber: [{ event: ["input"], fn: e => Ae("identificationNumber", (() => { const t = e.target.value, r = De(t, "identificationNumber"); Se(r, "identificationNumber") })) }] }; function Fe(e) { const t = e.value.replace(/\D/g, "").replace(/^(\d{2})(?=\d)/, "$1/"); return e.value = t, t } function Le(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } class We { constructor(e) { let { waitFieldsReady: t } = e; Le(this, "formMap", void 0), Le(this, "cardFormModules", void 0), Le(this, "cardSettings", void 0), Le(this, "eventsToWait", new Set), Le(this, "completedEvents", void 0), this.formMap = me.getContext("formMap"), this.cardFormModules = me.getContext("cardFormModules"), this.cardSettings = me.getContext("cardSettings"), this.completedEvents = me.createContext("completedEvents"), this.initEventsToWait({ waitFieldsReady: t }) } initEventsToWait(e) { let { waitFieldsReady: t } = e; this.eventsToWait.add("onMount"), this.formMap.has("identificationType") && this.eventsToWait.add("onIdentificationTypesReceived"), t && this.eventsToWait.add("fields") } onFormMounted(e) { let { error: t, customCallback: r } = e; if (t) return r?.(t); const i = this.cardFormModules.get("getIdentificationTypes"); this.formMap.get("identificationType") && i?.(), r?.() } onIdentificationTypesReceived(e) { let { error: t, data: r, customCallback: i } = e; if (t) return i?.(t); const n = this.formMap.get("identificationType")?.element, o = document.createDocumentFragment(); r?.forEach((e => { const t = document.createElement("option"); t.value = e.id, t.textContent = e.name, o.appendChild(t) })), Me(n), n?.appendChild(o), i?.(t, r) } onPaymentMethodsReceived(e) { let { error: t, data: r, customCallback: i, handler: n } = e; return t ? i?.(t) : r?.length ? (n.onPaymentMethodsReceived({ paymentMethods: r, customCallback: i, cardFormModules: this.cardFormModules, cardSettings: this.cardSettings, formMap: this.formMap }), void i?.(t, r)) : i?.(new Error("MercadoPago.js - No payment methods found")) } onInstallmentsReceived(e) { let { error: t, data: r, customCallback: i } = e; if (t) return i?.(t); const n = this.formMap.get("installments")?.element, o = document.createDocumentFragment(); r?.payer_costs?.forEach((e => { const t = document.createElement("option"); t.value = e.installments, t.textContent = e.recommended_message, o.appendChild(t) })), Me(n), n?.appendChild(o), i?.(t, r) } onIssuersReceived(e) { let { error: t, data: r, customCallback: i } = e; if (t) return i?.(t); const n = this.formMap.get("issuer")?.element, o = document.createDocumentFragment(); r?.forEach((e => { const t = document.createElement("option"); t.value = e.id, t.textContent = e.name, o.appendChild(t) })); const a = this.cardFormModules.get("getInstallments"); Me(n), n?.appendChild(o), a?.(), i?.(t, r) } onCardTokenReceived(e) { let { error: t, data: r, customCallback: i } = e; if (t) return i?.(t); Pe("token", r?.token), i?.(t, r) } onReady(e) { let { customCallback: t, data: r } = e; this.completedEvents.set(r.event, !0), this.eventsToWait.size === this.completedEvents.size && t?.() } } function Ye(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Ue(e, t) { return e.get(function (e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") }(e, t)) } var $e = new WeakMap, qe = new WeakMap, Ve = new WeakMap, ze = new WeakMap, Ke = new WeakMap, Be = new WeakMap, Ge = new WeakMap, He = new WeakMap; class Xe { constructor(e) { (function (e, t, r) { t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r })(this, "coreModules", void 0), Ye(this, $e, (e => { let { field: t, value: r, fieldSettings: i } = e; if ("string" != typeof r) return void console.warn(`MercadoPago.js - Error setting placeholder for field ${t}: placeholder should be a string. Ignoring...`); const n = i.element; if (i && n && !i.hidden) { if ("SELECT" === n.tagName && n.querySelector("[data-placeholder]")) return Me(n), void Ie(n, r); n.setAttribute("placeholder", r) } })), Ye(this, qe, new Map([["placeholder", Ue($e, this).bind(this)]])), Ye(this, Ve, ((e, t) => { const r = t?.get(e), i = { element: Ce(e, r.id), ...r }; t?.set(e, i) })), Ye(this, ze, ((e, t) => { const r = t?.get(e), i = { listeners: (e => { let { optionName: t } = e; return je[t] })({ optionName: e }), ...r }; t?.set(e, i) })), Ye(this, Ke, ((e, t) => { const { element: r, listeners: i } = t?.get(e); if (i?.length) try { i.forEach((e => { e?.event.forEach((t => { r?.addEventListener(t, e?.fn) })) })) } catch (e) { const t = `MercadoPago.js - Something went wrong adding EventListeners: ${e.message}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "DefaultCardHandler.applyFormMapEventListeners", reason: t } }), new Error(t) } })), Ye(this, Be, ((e, t) => { const { placeholder: r, element: i, style: n, customFonts: o, mode: a } = t?.get(e); r && ("SELECT" === i?.tagName ? Ie(i, r) : i.placeholder = r), n && console.warn(`MercadoPago.js - Ignoring styles for ${e}: styles are only available for 'cardNumber', 'securityCode', 'expirationDate', 'expirationMonth' and 'expirationYear' when the 'iframe' option is true`), o && console.warn(`MercadoPago.js - Ignoring customFonts for ${e}: customFonts are only available for 'cardNumber', 'securityCode', 'expirationDate', 'expirationMonth' and 'expirationYear' when the 'iframe' option is true`), a && console.warn(`MercadoPago.js - Ignoring mode for ${e}: mode is only available for 'expirationYear' or 'expirationDate' when the 'iframe' option is true`) })), Ye(this, Ge, (e => { const t = e?.get("form")?.id, r = document.getElementById(t); Object.values(be).forEach((e => { const t = document.getElementById(`${ve}${ke(e)}`); t && r?.removeChild(t) })) })), Ye(this, He, (() => { ["cardSettings", "customCallbacks", "cardFormModules"].forEach((e => me.deleteContext(e))) })), this.coreModules = e } createField(e, t, r) { let i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]; Ue(Ve, this).call(this, e, r), t || (i && Ue(Be, this).call(this, e, r), Ue(ze, this).call(this, e, r), Ue(Ke, this).call(this, e, r)) } getNonPCIValues() { return Re(["identificationType", "identificationNumber", "cardholderName"]) } destroyCardForm(e) { Ue(He, this).call(this), Ue(Ge, this).call(this, e) } async getTokenRaw() { const [e, t, r, i, n] = Re(["cardNumber", "cardExpirationMonth", "cardExpirationYear", "cardExpirationDate", "securityCode"]), [o, a, s] = this.getNonPCIValues(); let c = t, d = r; return i && ([c, d] = i.split("/")), await (this.coreModules?.createCardToken({ cardNumber: ri(e), cardholderName: s, identificationType: o, cardExpirationMonth: c, identificationNumber: a, cardExpirationYear: d, securityCode: n }, { cardNumber: !0, cardExpirationMonth: !0, cardExpirationYear: !0, securityCode: !0 })) } onPaymentMethodsReceived(e) { let { paymentMethods: t, customCallback: r, cardFormModules: i, cardSettings: n, formMap: o } = e; const a = t?.[0].payment_type_id; if (!Ee.includes(a)) return r?.(new Error(`Payment Method ${a} not supported.`)); const s = i.get("getInstallments"), c = i.get("getIssuers"), { id: d, additional_info_needed: l, issuer: u, settings: p, merchant_account_id: h, payment_type_id: m } = t?.[0], { card_number: f, security_code: g } = p[0]; n.set("payment_type_id", m), n.set("additional_info_needed", l), n.set("security_code", g), n.set("card_number", f); const y = String(u?.id); Pe("paymentMethods", d), h && Pe("merchantAccountId", h), l.includes("issuer_id") ? c?.() : (() => { const e = o.get("issuer")?.element; e.setAttribute("value", y); const t = document.createElement("option"); t.value = y, t.textContent = u.name, Me(e), e.append(t), s?.() })() } update(e) { let { field: t, properties: r, fieldSettings: i } = e; Ue(qe, this).forEach(((e, n) => { const o = r[n]; o && e({ field: t, value: o, fieldSettings: i }) })) } } function Je(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Ze(e, t) { return e.get(et(e, t)) } function Qe(e, t, r) { return e.set(et(e, t), r), r } function et(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var tt = new WeakMap, rt = new WeakMap, it = new WeakMap; class nt { constructor(e) { let { component: t, event: r, fn: i } = e; Je(this, tt, void 0), Je(this, rt, void 0), Je(this, it, void 0), Qe(tt, this, i), Qe(rt, this, t), Qe(it, this, r) } addEventListener() { Ze(rt, this).addEventListener(Ze(it, this), Ze(tt, this), !0) } removeEventListener() { Ze(rt, this).removeEventListener(Ze(it, this), Ze(tt, this), !0) } } const ot = "cardNumber", at = "securityCode", st = "expirationYear", ct = "expirationMonth", dt = "expirationDate", lt = { default: ["focus", "blur", "ready", "validityChange", "error", "change", "paste"], cardNumber: ["binChange"], securityCode: [], expirationYear: [], expirationMonth: [], expirationDate: [] }, ut = { beta: { cacheUrl: "https://api-static.mercadopago.com/secure-fields/staging", sourceUrl: "https://api.mercadopago.com/secure-fields/staging" }, gama: { cacheUrl: "https://api-static.mercadopago.com/secure-fields/staging", sourceUrl: "https://api.mercadopago.com/secure-fields/staging" }, prod: { cacheUrl: "https://api-static.mercadopago.com/secure-fields", sourceUrl: "https://api.mercadopago.com/secure-fields" }, lts: { cacheUrl: "https://api-static.mercadopago.com/secure-fields", sourceUrl: "https://api.mercadopago.com/secure-fields" }, development: { cacheUrl: "http://localhost:8080/secure-fields", sourceUrl: "http://localhost:8080/secure-fields" }, development_bricks: { cacheUrl: "https://api-static.mercadopago.com/secure-fields/staging", sourceUrl: "https://api.mercadopago.com/secure-fields/staging" } }; function pt() { return ut.prod || ut.development } let ht; function mt() { return ht } var ft; function gt(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } class yt { static triggerEvent(e, t) { const r = yt.customEventListeners.find((r => { let { event: i, field: n, group: o } = r; return i === e && t.field === n && (!t.group || t.group === o) })); r && r.fn(t) } } function wt(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function vt(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function bt(e, t) { return e.get(Et(e, t)) } function Et(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } ft = yt, gt(yt, "customEventListeners", []), gt(yt, "eventListener", void 0), gt(yt, "addWindowEventListener", (() => { ft.eventListener = new nt({ component: window, event: "message", fn: ft.callbackFn }), ft.eventListener.addEventListener() })), gt(yt, "removeWindowEventListener", (() => { ft.eventListener?.removeEventListener() })), gt(yt, "addCustomEventListener", (e => { ft.customEventListeners.push(e) })), gt(yt, "removeCustomEventListeners", (e => { const t = ft.customEventListeners.filter((t => e !== t.field)); ft.customEventListeners = t })), gt(yt, "callbackFn", (e => { const t = mt(); if (!t) return; const { origin: r } = new URL(t), { origin: i, data: { message: n, data: o } } = e; i === r && ft.triggerEvent(n, o) })); var Tt = new WeakMap, _t = new WeakMap, kt = new WeakMap; class Ct { constructor() { wt(this, Tt, void 0), vt(this, "createIFrame", ((e, t, r) => { const i = { frameBorder: 0, allowtransparency: !0, scrolling: "no", height: "100%", width: "100%", name: jt({ field: e.type, group: r }) }, n = document.createElement("iframe"); return Object.keys(i).forEach((e => { const t = i[e]; n.setAttribute(e, t) })), !t.length && (Ct.preflight = y.fetchPage(pt().cacheUrl).catch((() => y.fetchPage(pt().sourceUrl)))), Ct.preflight.then((i => { let { url: o } = i; !function (e) { ht = e }(o), n.src = o, bt(_t, this).call(this, { iFrame: n, fieldProperties: e, types: t, group: r }) })).catch((t => { const r = `Unable to load ${e.type}: ${t.message || "Failed to fetch"}`; pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "IFrameHandler.createIFrame", reason: r } }), yt.triggerEvent("error", { field: e.type, error: r }) })), n })), vt(this, "removeIFrameFromContainer", (e => { let { iFrame: t } = e; t.parentNode?.removeChild(t) })), vt(this, "appendIFrameToContainer", (e => { let { iFrame: t, container: r } = e; At({ container: r }), r.innerHTML = "", r.appendChild(t) })), wt(this, _t, (e => { let { iFrame: t, fieldProperties: r, types: i, group: n } = e; var o, a; o = Tt, a = new nt({ component: t, event: "load", fn: () => bt(kt, this).call(this, { iFrame: t, fieldProperties: r, types: i, group: n }) }), o.set(Et(o, this), a), bt(Tt, this).addEventListener() })), vt(this, "removeIframeEventListeners", (() => { bt(Tt, this)?.removeEventListener() })), wt(this, kt, (e => { let { iFrame: t, fieldProperties: r, types: i, group: n } = e; const o = t.contentWindow; if (o) { const { style: e, placeholder: t, type: a, customFonts: s, mode: c, enableLuhnValidation: d } = r; o.postMessage({ message: "initialize", field: a, options: { style: e, placeholder: t, customFonts: s, mode: c, enableLuhnValidation: d, group: n }, createdFields: i }, mt()) } })) } } function Mt(e, t) { return e.get(Pt(e, t)) } function Rt(e, t, r) { return e.set(Pt(e, t), r), r } function Pt(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } vt(Ct, "preflight", void 0); var It = new WeakMap; class xt { constructor() { (function (e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) })(this, It, void 0), Rt(It, this, []) } getFields() { return Mt(It, this) } addField(e) { Mt(It, this).push(e) } removeField(e) { let { field: t } = e; const r = t.type; return Rt(It, this, Mt(It, this).filter((e => e.type !== r))), Mt(It, this) } getFieldsType() { return Mt(It, this).map((e => e.type)) } getPrimaryField() { return Mt(It, this).find((e => e.isPrimary)) } } function Nt(e) { const t = e[0]; t.iFrame.setAttribute("data-primary", "true"), t.isPrimary = !0 } const At = e => { let { container: t } = e; if ("DIV" !== t.tagName) { const e = "[Fields] The container must be a div"; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "ValidationHelper.validateContainer", reason: e } }), new Error(e) } }, Ot = e => { const t = e.getFieldsType(), r = t.includes(ct), i = t.includes(st); return t.includes(dt) || !(r && !i || i && !r) }, Dt = "", St = ""; function jt(e) { let { field: t, group: r = St, separator: i = Dt } = e; return i && r ? t + i + r : t } function Ft(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Lt(e, t) { return e.get(Yt(e, t)) } function Wt(e, t, r) { return e.set(Yt(e, t), r), r } function Yt(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } const Ut = ["securityCode", "cardExpirationMonth", "cardExpirationYear", "cardExpirationDate", "cardNumber"]; var $t = new WeakMap, qt = new WeakMap, Vt = new WeakMap, zt = new WeakMap, Kt = new WeakMap, Bt = new WeakMap, Gt = new WeakMap, Ht = new WeakMap, Xt = new WeakMap; class Jt extends Xe { constructor(e) { super(e), Ft(this, $t, void 0), Ft(this, qt, void 0), Ft(this, Vt, void 0), Ft(this, zt, void 0), Ft(this, Kt, 0), Ft(this, Bt, ((e, t) => { const r = t?.get(e), i = Lt(Gt, this).call(this, e), n = this.coreModules?.fields.create(i, Lt(qt, this), { placeholder: r.placeholder, style: r.style, customFonts: r.customFonts, mode: r.mode }); n.mount(r.id), Lt($t, this).set(i, n), n.on("ready", (() => { var e; if (Wt(Kt, this, (e = Lt(Kt, this), ++e)), Lt(Kt, this) === Lt($t, this).size) { const e = Lt(Vt, this).get("onReady"), t = Lt(zt, this).get("onReady"); t?.({ customCallback: e, data: { event: "fields" } }) } })), n.on("validityChange", (e => { let { field: t, errorMessages: r } = e; const i = Lt(Vt, this).get("onValidityChange"), n = r.length ? Lt(Xt, this).call(this, r) : void 0; i?.(n, t) })), n.on("error", (e => { let { error: t } = e; const r = Lt(Vt, this).get("onError"); r?.(oi(t), "onIframeLoad") })), i === ot && n.on("binChange", (e => { let { bin: t } = e; const r = me.getContext("cardFormModules").get("setBin"); t || (t = ""), r?.(t), xe(t) })) })), Ft(this, Gt, (e => ({ securityCode: at, cardExpirationMonth: ct, cardExpirationYear: st, cardExpirationDate: dt, cardNumber: ot }[e]))), Ft(this, Ht, (() => { Lt($t, this).forEach((e => e?.unmount())) })), function (e, t, r) { t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r }(this, "destroyCardForm", (e => { super.destroyCardForm(e), Lt(Ht, this).call(this) })), Ft(this, Xt, (e => e.map((e => ({ code: e.cause, message: e.message }))))), Wt(qt, this, new xt), Wt(Vt, this, me.getContext("customCallbacks")), Wt(zt, this, me.getContext("internalCallbacks")), Wt($t, this, new Map); const t = me.getContext("formMap"); Ut.forEach((e => { t.has(e) && Lt($t, this).set(Lt(Gt, this).call(this, e), void 0) })) } async getTokenRaw() { const [e, t, r] = super.getNonPCIValues(); return await (this.coreModules?.fields.createCardToken({ identificationNumber: t, identificationType: e, cardholderName: r }, Lt(qt, this), { group: St })) } createField(e, t, r) { const i = Ut.includes(e); super.createField(e, t, r, !i), i && Lt(Bt, this).call(this, e, r) } onPaymentMethodsReceived(e) { let { paymentMethods: t, customCallback: r, cardFormModules: i, cardSettings: n, formMap: o } = e; super.onPaymentMethodsReceived({ paymentMethods: t, customCallback: r, cardFormModules: i, cardSettings: n, formMap: o }); const a = n.get("security_code"), s = Lt($t, this).get(at); s && s.update({ settings: a }); const c = n.get("card_number"), d = Lt($t, this).get(ot); d && d.update({ settings: c }) } update(e) { let { field: t, properties: r, fieldSettings: i } = e; const n = Lt($t, this).get(Lt(Gt, this).call(this, t)); n ? n.update(r) : super.update({ field: t, properties: r, fieldSettings: i }) } } class Zt { constructor() { } static build(e) { let { coreModules: t, iframe: r } = e; return r ? new Jt(t) : new Xe(t) } } function Qt(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function er(e, t) { return e.get(rr(e, t)) } function tr(e, t, r) { return e.set(rr(e, t), r), r } function rr(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } let ir; var nr = new WeakMap, or = new WeakMap, ar = new WeakMap, sr = new WeakMap, cr = new WeakMap, dr = new WeakMap, lr = new WeakMap, ur = new WeakMap, pr = new WeakMap, hr = new WeakMap, mr = new WeakMap, fr = new WeakMap, gr = new WeakMap, yr = new WeakMap, wr = new WeakMap, vr = new WeakMap, br = new WeakMap, Er = new WeakMap, Tr = new WeakMap, _r = new WeakMap, kr = new WeakMap, Cr = new WeakMap, Mr = new WeakMap, Rr = new WeakMap, Pr = new WeakMap, Ir = new WeakMap, xr = new WeakMap, Nr = new WeakMap, Ar = new WeakMap; class Or { constructor(e, t) { if (Qt(this, nr, void 0), Qt(this, or, void 0), Qt(this, ar, void 0), Qt(this, sr, void 0), Qt(this, cr, void 0), Qt(this, dr, void 0), Qt(this, lr, void 0), Qt(this, ur, void 0), Qt(this, pr, void 0), Qt(this, hr, void 0), Qt(this, mr, void 0), Qt(this, fr, (() => { const e = er(ar, this)?.get("cardNumber"), t = e?.element; er(mr, this) || (e => { let { element: t, eventName: r } = e; const i = new Event(r); t.dispatchEvent(i) })({ element: t, eventName: "input" }) })), Qt(this, gr, (async () => { let e, t, r; await er(ur, this), er(_r, this).call(this); const i = er(sr, this)?.onIdentificationTypesReceived; try { r = er(sr, this)?.onFetching?.("identificationTypes"); const e = await (er(or, this)?.getIdentificationTypes()); return t = e && (e => e.map((e => { let { id: t, name: r } = e; return { id: t, name: r } })))(e), er(dr, this)?.onReady({ customCallback: er(sr, this)?.onReady, data: { event: "onIdentificationTypesReceived" } }), Promise.resolve(t) } catch (t) { e = t, i || console.warn("MercadoPago.js - Failed to get identification types. Use cardForm callbacks to intercept the error ", t); const r = oi(e); er(sr, this)?.onError?.(r, "onIdentificationTypesReceived"), er(xr, this).call(this, r, "CardForm.getIdentificationTypes", pe.ERROR_TYPE_WARNING) } finally { er(Ir, this).call(this, r) && r?.(), er(dr, this)?.onIdentificationTypesReceived({ error: e, customCallback: i, data: t }) } })), Qt(this, yr, (e => { tr(hr, this, e) })), Qt(this, wr, (async () => { let e, t, r; await er(ur, this), er(_r, this).call(this); const i = er(sr, this)?.onPaymentMethodsReceived; try { r = er(sr, this)?.onFetching?.("paymentMethods"); const [e] = Re(["processingMode"]), i = await (er(or, this)?.getPaymentMethods({ bin: ri(er(hr, this)), processingMode: e })); return t = i && i.results.map((e => { let { issuer: t, id: r, payment_type_id: i, thumbnail: n, marketplace: o, deferred_capture: a, agreements: s, labels: c, name: d, site_id: l, processing_mode: u, additional_info_needed: p, status: h, settings: m, merchant_account_id: f } = e; return { issuer: t, id: r, payment_type_id: i, thumbnail: n, marketplace: o, deferred_capture: a, agreements: s, labels: c, name: d, site_id: l, processing_mode: u, additional_info_needed: p, status: h, settings: m, merchant_account_id: f } })), Promise.resolve(t) } catch (t) { e = t, i || console.warn("MercadoPago.js - Failed to get payment methods. Use cardForm callbacks to intercept the error ", t); const r = oi(e); er(sr, this)?.onError?.(r, "onPaymentMethodsReceived"), er(xr, this).call(this, r, "CardForm.getPaymentMethods", pe.ERROR_TYPE_WARNING) } finally { er(Ir, this).call(this, r) && r?.(), er(dr, this)?.onPaymentMethodsReceived({ error: e, customCallback: i, data: t, handler: er(pr, this) }) } })), Qt(this, vr, (async () => { let e, t, r; await er(ur, this), er(_r, this).call(this); const i = er(sr, this)?.onIssuersReceived; try { r = er(sr, this)?.onFetching?.("issuers"); const [e] = Re(["paymentMethods"]), i = await (er(or, this)?.getIssuers({ paymentMethodId: e, bin: ri(er(hr, this)), product_id: c.getProductId() })); return t = i && i.map((e => { let { id: t, name: r, thumbnail: i, processing_mode: n, merchant_account_id: o } = e; return { id: t, name: r, thumbnail: i, processing_mode: n, merchant_account_id: o } })), Promise.resolve(t) } catch (t) { e = t, i || console.warn("MercadoPago.js - Failed to get issuers. Use cardForm callbacks to intercept the error ", t); const r = oi(e); er(sr, this)?.onError?.(r, "onIssuersReceived"), er(xr, this).call(this, r, "CardForm.getIssuers", pe.ERROR_TYPE_WARNING) } finally { er(Ir, this).call(this, r) && r?.(), er(dr, this)?.onIssuersReceived({ error: e, customCallback: i, data: t }) } })), Qt(this, br, (async () => { let e, t, r; await er(ur, this), er(_r, this).call(this); const i = er(sr, this)?.onInstallmentsReceived; try { r = er(sr, this)?.onFetching?.("installments"); const e = me.getContext("cardSettings"), [i] = Re(["processingMode"]), n = await (er(or, this)?.getInstallments({ amount: er(cr, this)?.get("amount"), bin: ri(er(hr, this)), processingMode: i, paymentTypeId: e.get("payment_type_id"), product_id: c.getProductId() })); if (!n) throw new Error("No installments found"); return t = (e => { const { payer_costs: t, merchant_account_id: r = "" } = e[0]; return { merchant_account_id: r, payer_costs: t.map((e => { let { installments: t, installment_rate: r, discount_rate: i, reimbursement_rate: n, labels: o, min_allowed_amount: a, max_allowed_amount: s, recommended_message: c, installment_amount: d, total_amount: l, installment_rate_collector: u, payment_method_option_id: p } = e; return { installments: String(t), installment_rate: r, discount_rate: i, reimbursement_rate: n, labels: o, min_allowed_amount: a, max_allowed_amount: s, recommended_message: c, installment_amount: d, total_amount: l, payment_method_option_id: p, installment_rate_collector: u } })) } })(n), Promise.resolve(t) } catch (t) { e = t, i || console.warn("MercadoPago.js - Failed to get installments. Use cardForm callbacks to intercept the error ", t); const r = oi(e); er(sr, this)?.onError?.(r, "onInstallmentsReceived"), er(xr, this).call(this, r, "CardForm.getInstallments", pe.ERROR_TYPE_WARNING) } finally { er(Ir, this).call(this, r) && r?.(), er(dr, this)?.onInstallmentsReceived({ error: e, customCallback: i, data: t }) } })), Qt(this, Er, (() => { er(ar, this)?.forEach(((e, t) => { let { hidden: r } = e; er(pr, this).createField(t, r, er(ar, this)) })) })), Qt(this, Tr, (() => { er(ar, this)?.forEach((e => { let { element: t, listeners: r } = e; t && r && r.forEach((e => { e.event.forEach((r => t.removeEventListener(r, e.fn))) })) })) })), Qt(this, _r, (() => { if (!er(nr, this)) throw new Error("MercadoPago.js - CardForm is not mounted") })), Qt(this, kr, (() => { tr(lr, this, (() => { this.mount(), document.removeEventListener("DOMContentLoaded", er(lr, this)) })), "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", er(lr, this)) : this.mount() })), Qt(this, Cr, (() => { er(Rr, this).call(this), er(Pr, this).call(this), tr(dr, this, new We({ waitFieldsReady: er(mr, this) })), me.createContext("internalCallbacks", { onReady: er(dr, this)?.onReady.bind(er(dr, this)) }) })), Qt(this, Mr, (() => { er(pr, this).destroyCardForm(er(ar, this)), tr(dr, this, void 0) })), Qt(this, Rr, (() => { me.createContext("cardSettings"), me.createContext("customCallbacks", er(sr, this)), me.createContext("cardFormModules", { getIdentificationTypes: er(gr, this).bind(this), getInstallments: er(br, this).bind(this), getIssuers: er(vr, this).bind(this), getPaymentMethods: er(wr, this).bind(this), setBin: er(yr, this).bind(this), createCardToken: this.createCardToken.bind(this), getCardFormData: this.getCardFormData.bind(this) }), me.createContext("bin", { bin: "" }) })), Qt(this, Pr, (() => { const e = document.createDocumentFragment(); Object.values(be).forEach((t => { const r = document.createElement("input"); r.setAttribute("id", `${ve}${ke(t)}`), r.setAttribute("name", `${ve}${ke(t)}`), r.setAttribute("type", "hidden"), "processingMode" === t && r.setAttribute("value", er(cr, this)?.get("processingMode")), e.appendChild(r) })); const t = er(ar, this)?.get("form")?.id, r = document.getElementById(t); r?.appendChild(e) })), Qt(this, Ir, (e => !(!e || "function" != typeof e && (console.warn("MercadoPago.js - The return value of onFetching callback must be a function"), er(Nr, this).call(this, "onFetching is not a function", "CardForm.validateFetchCallback", pe.ERROR_TYPE_INTEGRATION), 1)))), Qt(this, xr, ((e, t, r) => { e?.map((e => { er(Nr, this).call(this, e.message, t, r) })) })), Qt(this, Nr, ((e, t, r) => { pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: r, origin: t, reason: `Failed on ${t} error: ${e}` } }) })), Qt(this, Ar, (e => { const t = {};["expirationDate", "expirationMonth", "expirationYear"].filter((t => Boolean(e[t]))).forEach((r => { const i = `card${r?.charAt(0).toUpperCase()}${r.slice(1)}`; e[i] = e[r], t[r] = !0, delete e[r] })), me.createContext("expirationFields", t) })), ir) return console.warn("MercadoPago.js - Cardform already instantiated. Returning existing instance..."), ir; tr(ur, this, t); const r = { ...e.form }; er(Ar, this).call(this, r); const i = (e => { const t = new ni; return Te.forEach((r => { let { name: i, type: n, required: o, path: a, acceptedValues: s, isAllowed: c } = r; const d = "root" === a ? e[i] : e[a]?.[i], l = "object" == typeof d ? d.id : d, u = typeof l, p = c(e); !l && p && o && t.addError({ ...Gr.default, description: `Required field "${i}" is missing` }), l && !p && t.addError({ ...Gr[i].allowed, description: `Field "${i} is not allowed with this configuration"` }), l && u !== n && t.addError({ ...Gr.default, description: `Type of ${i} must be ${n}. Received ${u}` }), l && s && !s.includes(l) && t.addError({ ...Gr.default, description: `Invalid option value "${l}". Available option(s): ${s.join(" or ")}` }) })), t.getErrors() })({ ...e, form: r }); if (i.length) throw i; const { amount: n, autoMount: o = !0, processingMode: a = s, callbacks: d = {}, iframe: l = !1 } = e; tr(cr, this, me.createContext("cardFormOptions", { amount: n, processingMode: a })), tr(ar, this, me.createContext("formMap", Dr(r))), tr(sr, this, d), tr(or, this, new Kr({ services: new we })), tr(mr, this, l), er(Cr, this).call(this), tr(pr, this, Zt.build({ coreModules: er(or, this), iframe: l })), o && er(kr, this).call(this), c.setIframeEnabled(er(mr, this)), ir = this } mount() { if (er(nr, this)) throw new Error("CardForm already mounted"); let e; try { er(Er, this).call(this), tr(nr, this, !0), er(fr, this).call(this), er(dr, this)?.onReady({ customCallback: er(sr, this)?.onReady, data: { event: "onMount" } }) } catch (t) { e = t; const r = oi(e); er(sr, this)?.onError?.(r, "onFormMounted"), er(xr, this).call(this, r, "CardForm.mount", pe.ERROR_TYPE_INTEGRATION) } finally { const t = er(sr, this)?.onFormMounted; er(dr, this)?.onFormMounted({ error: e, customCallback: t }), document.removeEventListener("DOMContentLoaded", er(lr, this)) } } unmount() { let e; er(_r, this).call(this); try { er(Tr, this).call(this), er(Mr, this).call(this), me.destroyContexts(), tr(cr, this, void 0), tr(ar, this, void 0), tr(or, this, void 0), tr(nr, this, !1), ir = void 0 } catch (t) { e = t; const r = oi(e); er(sr, this)?.onError?.(r, "onFormUnmounted"), er(xr, this).call(this, r, "CardForm.unmount", pe.ERROR_TYPE_INTEGRATION) } finally { er(sr, this)?.onFormUnmounted?.(e), tr(sr, this, void 0) } } submit() { er(_r, this).call(this); try { const e = er(ar, this)?.get("form"), t = e?.element; return t.requestSubmit() } catch (e) { throw er(Nr, this).call(this, `submitting form : ${e.message}`, "CardForm.submit", pe.ERROR_TYPE_INTEGRATION), new Error(`MercadoPago.js - Error submitting form : ${e.message}`) } } update(e, t) { if ("string" != typeof e) return console.warn("MercadoPago.js - Error updating: field parameter should be a string. Ignoring..."), void er(Nr, this).call(this, "field parameter should be a string", "CardForm.update", pe.ERROR_TYPE_INTEGRATION); const r = er(ar, this)?.get(e); if (!r) return void console.warn(`MercadoPago.js - Error updating field ${e}: not found. Ignoring...`); const { placeholder: i = r.placeholder, style: n = r.style } = t; er(ar, this)?.set(e, { ...r, placeholder: i, style: n }), er(pr, this).update({ field: e, properties: t, fieldSettings: r }) } async createCardToken() { let e, t, r; await er(ur, this), er(_r, this).call(this); const i = er(sr, this)?.onCardTokenReceived; try { r = er(sr, this)?.onFetching?.("cardToken"); const e = await (er(pr, this)?.getTokenRaw?.()); return t = e && (e => ({ token: e.id }))(e), pe.send({ path: "/card_form/create_card_token", type: pe.TRACK_TYPE_EVENT, eventData: { is_iframe: c.getIframeEnabled() } }), Promise.resolve(t) } catch (t) { e = t, i || console.warn("MercadoPago.js - Failed to create card token. Use cardForm callbacks to intercept the error ", t); const r = oi(e); return er(sr, this)?.onError?.(r, "onCardTokenReceived"), er(xr, this).call(this, r, "CardForm.createCardToken", pe.ERROR_TYPE_WARNING), Promise.reject(t) } finally { er(Ir, this).call(this, r) && r?.(), er(dr, this)?.onCardTokenReceived({ error: e, customCallback: i, data: t }) } } getCardFormData() { let e; er(_r, this).call(this); try { const [t, r, i, n, o, a, s, c, d] = Re(["installments", "identificationType", "identificationNumber", "issuer", "paymentMethods", "token", "processingMode", "merchantAccountId", "cardholderEmail"]), l = er(cr, this)?.get("amount"); return e = { amount: l, paymentMethodId: o, token: a, issuerId: n, installments: t, identificationType: r, identificationNumber: i, processingMode: s, merchantAccountId: c, cardholderEmail: d }, e } catch (e) { return er(Nr, this).call(this, "Preparing cardform data", "CardForm.getCardFormData", pe.ERROR_TYPE_INTEGRATION), e } } } const Dr = e => { let { id: t, ...r } = e; const { PAYMENT_METHOD: i, TOKEN: n, PROCESSING_MODE: o, MERCHANT_ACCOUNT_ID: a } = be; return { form: { id: t }, paymentMethods: { id: `${ve}${ke(i)}`, hidden: !0 }, token: { id: `${ve}${ke(n)}`, hidden: !0 }, processingMode: { id: `${ve}${ke(o)}`, hidden: !0 }, merchantAccountId: { id: `${ve}${ke(a)}`, hidden: !0 }, ...r } }; function Sr(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function jr(e, t) { return e.get(Lr(e, t)) } function Fr(e, t, r) { return e.set(Lr(e, t), r), r } function Lr(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var Wr = new WeakMap, Yr = new WeakMap, Ur = new WeakMap, $r = new WeakMap, qr = new WeakMap; class Vr { constructor(e) { let { field: t, options: r, metadata: i } = e; Sr(this, Wr, void 0), Sr(this, Yr, void 0), Sr(this, Ur, void 0), Sr(this, $r, void 0), Sr(this, qr, void 0), (e => { let { field: t, createdFields: r, group: i } = e; const n = jt({ field: t, group: i }); if (r.includes(n)) { const e = `[Fields] The field ${t} has already been created${i ? " on group " + i : ""}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "ValidationHelper.validateFieldType", reason: e } }), new Error(e) } })({ field: t, createdFields: i.getFieldsType(), group: r?.group }), Fr(Wr, this, i), Fr(Yr, this, (e => { let { field: t, options: r = {} } = e; const { placeholder: i, style: n, customFonts: o, mode: a, enableLuhnValidation: s } = r; return { type: t, style: n, placeholder: i, customFonts: o, mode: a, enableLuhnValidation: s } })({ field: t, options: r })), Fr(Ur, this, !1), Fr($r, this, new Ct), Fr(qr, this, r?.group || St) } mount(e) { if (jr(Ur, this)) throw new Error(`Field '${jr(Yr, this).type}' already mounted`); try { const t = document.getElementById(e); if (!t) throw new Error("Container not found"); const r = jr($r, this).createIFrame(jr(Yr, this), jr(Wr, this).getFieldsType(), jr(qr, this)); jr($r, this).appendIFrameToContainer({ iFrame: r, container: t }), jr(Wr, this).addField({ iFrame: r, isPrimary: !1, type: jt({ field: jr(Yr, this).type, group: jr(qr, this) }) }), jr(Wr, this).getPrimaryField() || (Nt(jr(Wr, this).getFields()), yt.addWindowEventListener()), Fr(Ur, this, !0) } catch (t) { console.warn(`MercadoPago.js - Error when mounting field ${e}: ${t.message}`), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.mount", reason: `Error when mounting field ${e}` } }) } return this } unmount() { if (!jr(Ur, this)) throw new Error(`Field '${jr(Yr, this).type}' already unmounted`); try { const e = jr(Wr, this).getFields().find((e => e.type === jt({ field: jr(Yr, this).type, group: jr(qr, this) }))); if (!e) throw new Error("Field not found"); const t = jr(Wr, this).getPrimaryField(), r = t?.type === jr(Yr, this).type, { iFrame: i } = e; jr($r, this).removeIFrameFromContainer({ iFrame: i }), jr($r, this).removeIframeEventListeners(), yt.removeCustomEventListeners(function (e) { let { iframeName: t, separator: r = Dt } = e; return r ? t.split(r)[0] : t }({ iframeName: e.type })); const n = jr(Wr, this).removeField({ field: e }); n.length || yt.removeWindowEventListener(), r && n.length && Nt(n), Fr(Ur, this, !1) } catch (e) { console.warn(`MercadoPago.js - Error when unmounting field : ${e.message}`), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.unmount", reason: `Error when unmounting field error: ${e.message}` } }) } } on(e, t) { try { (e => { let { field: t, event: r, fn: i } = e; if (![...lt[t], ...lt.default].includes(r)) { const e = `[Fields] ${r} event is not valid for ${t}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "ValidationHelper.validateAllowedEvents", reason: e } }), new Error(e) } if ("function" != typeof i) { const e = `[Fields] You must pass a function arg for ${t}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "ValidationHelper.validateAllowedEvents", reason: e } }), new Error(e) } })({ field: jr(Yr, this).type, event: e, fn: t }), yt.addCustomEventListener({ field: jr(Yr, this).type, event: e, group: jr(qr, this), fn: t }) } catch (e) { console.warn(`MercadoPago.js - Error when adding on function : ${e.message}`), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.on", reason: `Error when adding on function : ${e.message}` } }) } return this } update(e) { this.dispatchEvent({ eventName: "update", properties: e }) } focus() { this.dispatchEvent({ eventName: "focus" }) } blur() { this.dispatchEvent({ eventName: "blur" }) } dispatchEvent(e) { let { eventName: t, properties: r } = e; const i = jr(Wr, this).getFields(), n = jr(Yr, this).type, o = i.find((e => e.type === jt({ field: n, group: jr(qr, this) }))); if (!o) return console.warn(`MercadoPago.js - Error on ${t} event on ${n}: not found. Ignoring...`), void pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: `Fields.${t}`, reason: `Field to ${t}: ${n} not found` } }); o.iFrame.contentWindow?.postMessage({ message: t, field: n, options: { group: jr(qr, this) }, createdFields: jr(Wr, this).getFieldsType(), ...r && { properties: r } || {} }, mt()) } static getCardToken(e) { let { metadata: t, nonPCIData: i, options: n } = e; const o = t.getPrimaryField(); if (!o) return pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.getCardToken", reason: "No primary field found" } }), Promise.reject({ message: "No primary field found. Please create and mount one before calling 'createCardToken'. Ignoring call..." }); if (!Ot(t)) return pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.getCardToken", reason: "Received expirationDate and expirationMonth together" } }), Promise.reject({ message: "You must create 'expirationDate' alone or 'expirationMonth' and 'expirationYear' together" }); const a = Jr({ methodName: "createCardToken", incomingParams: i }); return a.length ? (console.warn("MercadoPago.js - Form could not be submitted", a), a.map((e => { pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.getCardToken", reason: e.message } }) })), Promise.reject(a)) : new Promise(((e, a) => { if (o.iFrame.contentWindow) { const s = new MessageChannel; s.port1.onmessage = t => { let { data: r } = t; s.port1.close(), r.error ? a(r.error) : e(r) }, o.iFrame.contentWindow.postMessage({ message: "createCardToken", createdFields: t.getFieldsType(), nonPCIData: ge(i), query: { public_key: c.getPublicKey(), locale: c.getLocale(), js_version: r, referer: h }, isMobile: I(), options: n || {} }, mt(), [s.port2]) } else a({ message: "Error trying to create cardToken: The iFrame does not have a window" }), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Fields.getCardToken", reason: "Error to init message channel" } }) })) } static updateCardToken(e) { let { token: t, metadata: i, options: n } = e; const o = i.getPrimaryField(); return o ? Ot(i) ? t ? new Promise(((e, a) => { if (o.iFrame.contentWindow) { const s = new MessageChannel; s.port1.onmessage = t => { let { data: r } = t; s.port1.close(), r.error ? a(r.error) : e(r) }, o.iFrame.contentWindow.postMessage({ message: "updateCardToken", createdFields: i.getFieldsType(), token: t, query: { public_key: c.getPublicKey(), locale: c.getLocale(), js_version: r, referer: h }, isMobile: I(), options: n || {} }, mt(), [s.port2]) } else a({ message: "Error trying to create cardToken: The iFrame does not have a window" }), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Fields.updateCardToken", reason: "Error to init message channel" } }) })) : (pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.updateCardToken", reason: "Token to update not received" } }), Promise.reject({ message: "You must send token to update" })) : (pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.updateCardToken", reason: "Received expirationDate and expirationMonth together" } }), Promise.reject({ message: "You must create 'expirationDate' alone or 'expirationMonth' and 'expirationYear' together" })) : (pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Fields.updateCardToken", reason: "No primary field found" } }), Promise.reject({ message: "No primary field found. Please create and mount one before calling 'createCardToken'. Ignoring call..." })) } } function zr(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } class Kr { constructor(e) { let { services: t } = e; zr(this, "services", void 0), zr(this, "fields", { create: (e, t, r) => new Vr({ field: e, options: r, metadata: t }), createCardToken: (e, t, r) => Vr.getCardToken({ metadata: t, nonPCIData: e, options: r }), updateCardToken: (e, t, r) => Vr.updateCardToken({ token: e, metadata: t, options: r }) }), this.services = t } async getIdentificationTypes() { try { return await this.services.getIdentificationTypes() } catch (e) { return console.error("failed to get indetification types", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Modules.getIdentificationTypes", reason: "external service error" } }), Promise.reject(e) } } async getPaymentMethods(e) { const t = Jr({ methodName: "getPaymentMethods", incomingParams: e }); if (t.length > 0) throw t; const { bin: r, processingMode: i = s, ...n } = e; try { return await this.services.getPaymentMethods({ bins: ii(r), processing_mode: i, ...n }) } catch (e) { return console.error("failed to get payment methods", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Modules.getPaymentMethods", reason: "external service error" } }), Promise.reject(e) } } async getIssuers(e) { const t = Jr({ methodName: "getIssuers", incomingParams: e }); if (t.length > 0) throw t; const { bin: r, paymentMethodId: i, product_id: n = c.getProductId(), ...o } = e; try { return await this.services.getIssuers({ bin: ii(r), payment_method_id: i, product_id: n, ...o }) } catch (e) { return console.error("failed to get indetification types", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Modules.getIssuers", reason: "external service error" } }), Promise.reject(e) } } async getInstallments(e) { const t = Jr({ methodName: "getInstallments", incomingParams: e }); if (t.length > 0) throw t; const { bin: r, processingMode: i = s, paymentTypeId: n = "", product_id: o = c.getProductId(), ...a } = e; try { return await this.services.getInstallments({ bin: ii(r), processing_mode: i, payment_type_id: n, product_id: o, ...a }) } catch (e) { return console.error("failed to get indetification types", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Modules.getInstallments", reason: "external service error" } }), Promise.reject(e) } } async createCardToken(e, t) { if (!ei()) return Promise.reject("MercadoPago.js - Your payment cannot be processed because the website contains credit card data and is not using a secure connection.SSL certificate is required to operate."); const r = Jr({ methodName: "createCardToken", incomingParams: e, validateFieldsParams: t }); if (r.length > 0) throw r; Br(e); try { return await this.services.createCardToken(e) } catch (e) { return console.error("failed to get indetification types", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Modules.createCardToken", reason: "external service error" } }), Promise.reject(e) } } async updateCardToken(e, t) { if (!ei()) return Promise.reject("MercadoPago.js - Your payment cannot be processed because the website contains credit card data and is not using a secure connection.SSL certificate is required to operate."); const r = Jr({ methodName: "updateCardToken", incomingParams: e, validateFieldsParams: t }); if (r.length > 0) throw r; Br(e); try { return await this.services.updateCardToken(e) } catch (e) { return console.error("failed to get indetification types", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "Modules.updateCardToken", reason: "external service error" } }), Promise.reject(e) } } } function Br(e) { const t = e.cardExpirationYear; 2 === t?.length && (e.cardExpirationYear = `20${t}`) } const Gr = { amount: { empty: { code: "000", message: "parameter amount can not be null/empty" }, invalid: { code: "000", message: "invalid parameter amount" } }, bin: { empty: { code: "000", message: "parameter bin can not be null/empty" }, invalid: { code: "000", message: "invalid parameter bin" } }, paymentMethodId: { empty: { code: "000", message: "parameter paymentMethodId can not be null/empty" }, invalid: { code: "000", message: "invalid parameter paymentMethodId" } }, processingMode: { empty: { code: "000", message: "parameter processingMode can not be null/empty" }, invalid: { code: "000", message: "invalid parameter processingMode" } }, cardNumber: { empty: { code: "205", message: "parameter cardNumber can not be null/empty" }, invalid: { code: "E301", message: "invalid parameter cardNumber" } }, cardExpirationMonth: { empty: { code: "208", message: "parameter cardExpirationMonth can not be null/empty" }, invalid: { code: "325", message: "invalid parameter cardExpirationMonth" }, allowed: { code: "XXX", message: "field cardExpirationMonth cannot coexist with cardExpirationDate" } }, cardExpirationYear: { empty: { code: "209", message: "parameter cardExpirationYear can not be null/empty" }, invalid: { code: "326", message: "invalid parameter cardExpirationYear" }, allowed: { code: "XXX", message: "field cardExpirationYear cannot coexist with cardExpirationDate" } }, cardExpirationDate: { allowed: { code: "XXX", message: "field cardExpirationDate cannot coexist with cardExpirationMonth or cardExpirationYear" } }, identificationType: { empty: { code: "212", message: "parameter identificationType can not be null/empty" }, invalid: { code: "322", message: "invalid parameter identificationType" } }, identificationNumber: { empty: { code: "214", message: "parameter identificationNumber can not be null/empty" }, invalid: { code: "324", message: "invalid parameter identificationNumber" } }, cardIssuerId: { empty: { code: "220", message: "parameter cardIssuerId can not be null/empty" } }, cardholderName: { empty: { code: "221", message: "parameter cardholderName can not be null/empty" }, invalid: { code: "316", message: "invalid parameter cardholderName" } }, securityCode: { empty: { code: "224", message: "parameter securityCode can not be null/empty" }, invalid: { code: "E302", message: "invalid parameter securityCode" } }, default: { code: "default", message: "Another error" } }, Hr = { processingMode: e => { let { required: t } = e; return { type: "string", validateFn: e => a.includes(e), required: t } }, bin: e => { let { required: t } = e; return { type: "string", validateFn: e => /^\d{6,16}$/.test(e), required: t } }, amount: e => { let { required: t } = e; return { type: "string", validateFn: e => /([0-9]*[.])?[0-9]+/.test(e), required: t } }, locale: e => { let { required: t } = e; return { type: "string", validateFn: e => /^[a-z]{2}-[A-Z]{2}$/.test(e), required: t } }, cardNumber: e => { let { required: t } = e; return { type: "string", validateFn: e => !isNaN(Number(e)) && e.length > 8 && e.length < 19, required: t } }, paymentMethodId: e => { let { required: t } = e; return { type: "string", required: t } }, cardIssuerId: e => { let { required: t } = e; return { type: "string", required: t } }, cardholderName: e => { let { required: t } = e; return { type: "string", validateFn: e => /^[a-zA-Z0-9ãÃáÁàÀâÂäÄẽẼéÉèÈêÊëËĩĨíÍìÌîÎïÏõÕóÓòÒôÔöÖũŨúÚùÙûÛüÜçÇ’ñÑ .'-]*$/.test(e), required: t } }, cardholderEmail: e => { let { required: t } = e; return { type: "string", validateFn: e => /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(e), required: t } }, identificationType: e => { let { required: t } = e; return { type: "string", required: t } }, identificationNumber: e => { let { required: t } = e; return { type: "string", validateFn: e => /^[a-zA-Z\d]*$/.test(e), required: t } }, securityCode: e => { let { required: t } = e; return { type: "string", validateFn: e => /^\d*$/.test(e), required: t } }, cardExpirationMonth: e => { let { required: t } = e; return { type: "string", validateFn: e => /(0[1-9]|1[0-2])/.test(e), required: t } }, cardExpirationYear: e => { let { required: t } = e; return { type: "string", validateFn: e => /^\d{2}(\d{2})?$/.test(e), required: t } } }, Xr = { getPaymentMethods: () => ({ bin: Hr.bin({ required: !0 }), processingMode: Hr.processingMode({ required: !1 }) }), getIssuers: () => ({ paymentMethodId: Hr.paymentMethodId({ required: !0 }), bin: Hr.bin({ required: !0 }) }), getInstallments: () => ({ bin: Hr.bin({ required: !0 }), amount: Hr.amount({ required: !0 }), processingMode: Hr.processingMode({ required: !1 }), locale: Hr.locale({ required: !1 }), paymentMethodId: Hr.paymentMethodId({ required: !1 }), cardIssuerId: Hr.cardIssuerId({ required: !1 }) }), createCardToken: (e, t) => { const r = e?.get("additional_info_needed"), i = e?.get("security_code"); return { cardNumber: Hr.cardNumber({ required: t?.cardNumber }), cardholderName: Hr.cardholderName({ required: r?.includes("cardholder_name") }), cardholderEmail: Hr.cardholderEmail({ required: !1 }), identificationType: Hr.identificationType({ required: r?.includes("cardholder_identification_type") }), identificationNumber: Hr.identificationNumber({ required: r?.includes("cardholder_identification_number") }), securityCode: Hr.securityCode({ required: "mandatory" === i?.mode && t?.securityCode }), cardExpirationMonth: Hr.cardExpirationMonth({ required: t?.cardExpirationMonth }), cardExpirationYear: Hr.cardExpirationYear({ required: t?.cardExpirationYear }) } }, updateCardToken: (e, t) => { const r = e?.get("security_code"); return { securityCode: Hr.securityCode({ required: "mandatory" === r?.mode && t?.securityCode }), cardExpirationMonth: Hr.cardExpirationMonth({ required: t?.cardExpirationMonth }), cardExpirationYear: Hr.cardExpirationYear({ required: t?.cardExpirationYear }) } } }, Jr = e => { let { methodName: t, incomingParams: r, validateFieldsParams: i } = e; const n = new ni, o = ((e, t, r) => Xr[e](t, r))(t, me.getContext("cardSettings"), i), a = ["identificationType", "identificationNumber"]; return o || n.addError({ ...Gr.default, description: `Could not find validation for ${t}` }), r && "object" == typeof r ? (Object.entries(o).forEach((e => { let [t, i] = e; const o = r[t]; (o || !a.includes(t)) && n.addErrors(Zr({ field: t, value: o, config: i })) })), n.getErrors()) : (n.addError({ ...Gr.default, description: "Expecting an object as argument" }), n.getErrors()) }, Zr = e => { let { field: t, value: r, config: i } = e; const n = new ni; if (!i) { const e = Hr[t]; if (!e) return n.addError({ ...Gr.default, description: `Could not find validation for ${t}` }), n.getErrors(); i = e({ required: !0 }) } const { type: o, required: a, validateFn: s } = i, c = Gr[t]?.invalid || Gr.default, d = Gr[t]?.empty || Gr.default; return !r && a ? (n.addError(Qr(d, t)), n.getErrors()) : r ? (r && typeof r !== o && n.addError(Qr(c, t)), s && !s(r) && n.addError(Qr(c, t)), n.getErrors()) : n.getErrors() }, Qr = (e, t) => { if (t.includes("cardE")) { const r = me.getContext("expirationFields"); if (!r) return e; const i = r.has(t.replace("cardE", "e")) || r.has("expirationDate"); e.message.includes("cardE") && i && (e.message = e.message.replace("cardE", "e")) } return e }, ei = () => { const e = c.getPublicKey(); return "https:" === window?.location?.protocol || /^TEST/.test(e) }, ti = () => { const e = document.querySelector("html"); return e && e.lang ? e.lang : window.navigator?.language || window.navigator?.languages?.[0] || window.navigator?.browserLanguage || window.navigator?.userLanguage || window.navigator?.systemLanguage }, ri = e => e.replace(/\D+/g, ""), ii = e => e.slice(0, 8); class ni { constructor() { (function (e, t, r) { t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r })(this, "errors", void 0), this.errors = [] } addError(e) { this.errors.push(e) } getErrors() { return this.errors } addErrors(e) { this.errors = [...this.errors, ...e] } } function oi(e) { return "string" == typeof e ? [{ message: e }] : e instanceof ProgressEvent ? [{ message: "Failed to fetch" }] : Array.isArray(e) ? e.map((e => { let { message: t } = e; return { message: t } })) : [{ message: e?.message || "Unknown error" }] } function ai(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function si(e, t) { return e.get(function (e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") }(e, t)) } var ci = new WeakMap, di = new WeakMap; class li { constructor() { ai(this, ci, new RegExp("\\s{2,}|\\n|\\t")), ai(this, di, (e => e.replace(si(ci, this), ""))) } getProperty(e, t) { if (!e) { const e = "Invalid bundle provided"; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "ScriptCodeExecutor.getProperty", reason: e } }), new Error(e) } const r = si(di, this).call(this, e), i = document.createElement("script"); if (i.textContent = r, document.body.appendChild(i), !componentModule) { const e = "Component module is empty"; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "ScriptCodeExecutor.getProperty", reason: e } }), new Error(e) } return t(componentModule) } } function ui(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var pi = new WeakMap; class hi { constructor(e) { var t, r; (function (e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) })(this, pi, void 0), r = e, (t = pi).set(ui(t, this), r) } getURL(e, t) { const r = new URL((this, (i = pi).get(ui(i, this)) + e)); var i; return t ? (Object.entries(t).forEach((e => { let [t, i] = e; return r.searchParams.append(t, i) })), r.href) : r.href } assignDefaultRequestOptions(e) { return Object.assign({ method: "GET", retry: !0, numOfRetries: 3 }, e) } mapToHttpResponse(e) { return Object.assign({}, e) } async executeCall(e, t) { try { const r = this.assignDefaultRequestOptions(t), { retry: i = !1, numOfRetries: n } = r; let o = n || 0; do { const t = await d(this.getURL(e, r.queryParams), r); if (t.ok || this.isClientError(t.status)) return this.mapToHttpResponse(t) } while (i && --o > 0); throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "HttpClient.executeCall", reason: `Exceeded number of retries: ${n}` } }), new Error(`Exceeded number of retries: ${n}`) } catch (e) { throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "HttpClient.executeCall", reason: e.message } }), new Error(e.message) } } isClientError(e) { return e >= 400 && e <= 499 } } function mi(e) { return new hi(e) } const fi = { beta: { bundleApiBaseUrl: "https://beta-sdk.mercadopago.com/bricks", apiBaseUrl: "https://api.mercadopago.com/bricks/beta" }, gama: { bundleApiBaseUrl: "https://beta-sdk.mercadopago.com/bricks", apiBaseUrl: "https://api.mercadopago.com/bricks/beta" }, prod: { bundleApiBaseUrl: "https://sdk.mercadopago.com/bricks", apiBaseUrl: "https://api.mercadopago.com/bricks" }, lts: { bundleApiBaseUrl: "https://sdk.mercadopago.com/lts/bricks", apiBaseUrl: "https://api.mercadopago.com/bricks" }, development: { bundleApiBaseUrl: "http://localhost:8080", apiBaseUrl: "https://api.mercadopago.com/bricks/beta" }, development_bricks: { bundleApiBaseUrl: "http://localhost:8080", apiBaseUrl: "https://api.mercadopago.com/bricks/beta" } }; function gi() { return fi.prod || fi.prod } function yi(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function wi(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function vi(e, t) { return e.get(Ei(e, t)) } function bi(e, t, r) { return e.set(Ei(e, t), r), r } function Ei(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var Ti = new WeakMap, _i = new WeakMap; class ki { constructor() { yi(this, Ti, void 0), yi(this, _i, void 0), bi(Ti, this, mi(gi().bundleApiBaseUrl)), bi(_i, this, new we) } async getBundle(e) { const t = await vi(Ti, this).executeCall(`/components/${e}`, { method: "GET" }); if (t.status === ki.BUNDLE_NOT_FOUND_STATUS_CODE) { const t = `Component not found: ${e}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "RemoteBundleApi.getBundle", reason: t } }), new Error(t) } if (!t.ok) { const r = `Could not fetch remote ${e}. Status: ${t.status}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "RemoteBundleApi.getBundle", reason: r } }), new Error(r) } const r = {}; return r.code = await t.text(), r.signature = t.headers.get(ki.HEADER_X_SIGNATURE), r.version = t.headers.get(ki.HEADER_X_BRICKS_VERSION), r } async getSiteId() { const e = await vi(_i, this).getPaymentMethods({ limit: 1 }); if (0 === e.results.length) { const e = "Payment methods returned empty results"; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "RemoteBundleApi.getSiteId", reason: e } }), new Error(e) } const t = e.results.find((e => e.site_id))?.site_id; if (!t) { const e = "Could not get valid siteId"; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "RemoteBundleApi.getSiteId", reason: e } }), new Error(e) } return t } } function Ci(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } wi(ki, "HEADER_X_SIGNATURE", "X-Signature"), wi(ki, "HEADER_X_BRICKS_VERSION", "X-Bricks-Version"), wi(ki, "BUNDLE_NOT_FOUND_STATUS_CODE", 404); var Mi = new WeakMap; class Ri { constructor() { var e, t; (function (e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) })(this, Mi, void 0), e = Mi, t = mi(gi().bundleApiBaseUrl), e.set(Ci(e, this), t) } async getTranslation(e, t) { const r = t.toLowerCase(), i = await (n = Mi, this, n.get(Ci(n, this))).executeCall(`/components/${e}/translations/${r}`); var n; if (!i.ok) { const t = `Could not fetch remote ${e} translation. Status: ${i.status}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "RemoteTranslationApi.getTranslation", reason: t } }), new Error(t) } const o = i.headers.get("X-Retrieved-Language"); return o !== r && console.warn(`[BRICKS] The requested language '${t}' is not supported, the server retrieved the fallback language '${o}'.`), await i.json() } } function Pi(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } const Ii = "2147483647"; class xi { constructor(e) { let { id: t, src: r, styles: i, render: n = !0, container: o, showLoader: a = !0, hidden: s = !1, bodyOverflow: c = !0, closeButton: d = !1 } = e; Pi(this, "id", void 0), Pi(this, "src", void 0), Pi(this, "hidden", void 0), Pi(this, "closeButton", void 0), Pi(this, "styles", void 0), Pi(this, "bodyOverflow", void 0), Pi(this, "showLoader", void 0), Pi(this, "spinner", void 0), Pi(this, "wrapper", void 0), Pi(this, "container", void 0), Pi(this, "el", void 0), this.id = t, this.src = r, this.hidden = s, this.closeButton = d, this.styles = i || {}, this.bodyOverflow = c, this.showLoader = a, this.spinner = this.showLoader && this.createSpinner(), this.wrapper = this.createWrapper(), this.el = null, this.container = o, this.attachStylesAndWrapper(), n && (this.el = this.create(), this.render()) } createWrapper() { const e = document.createElement("div"); return e.classList.add(`mp-${this.id}-wrapper`), this.showLoader && (e.innerHTML = '\n \n \n \n '), e.setAttribute("style", this.styles.wrapper), e } create() { const e = document.createElement("iframe"); return e.id = this.id, e.src = this.src, e.setAttribute("width", "100%"), e.setAttribute("height", "100%"), this.styles.iframe && e.setAttribute("style", this.styles.iframe), e.frameBorder = "0", e.setAttribute("transition", "height 2s ease"), e } createSpinner() { const e = document.createElement("style"); return e.setAttribute("type", "text/css"), e.innerHTML = "\n @keyframes loading-rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n\n @keyframes loading-dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100, 200;\n stroke-dashoffset: -20px;\n }\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n }\n\n @keyframes loading-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n .mp-spinner {\n position: absolute;\n top: 100px;\n left: 50%;\n font-size: 70px;\n margin-left: -35px;\n animation: loading-rotate 2.5s linear infinite;\n transform-origin: center center;\n width: 1em;\n height: 1em;\n }\n\n .mp-spinner-path {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n animation: loading-dash 1.5s ease-in-out infinite;\n stroke-linecap: round;\n stroke-width: 2px;\n stroke: #009ee3;\n }\n", e } attachStylesAndWrapper() { this.spinner && document.head.appendChild(this.spinner), this.container.appendChild(this.wrapper) } render() { return this.el || (this.el = this.create()), this.wrapper.appendChild(this.el), this.open(), this } onLoad(e) { return "function" == typeof e && (this.el.onload = e), this } open() { if (this.wrapper.style["z-index"] = Ii, this.wrapper.style.visibility = "visible", this.wrapper.style.width = "100%", this.wrapper.style.height = "100%", this.wrapper.style.opacity = this.hidden ? "0" : "1", this.hidden = !1, this.bodyOverflow && (document.body.style.overflow = "hidden"), this.closeButton && !this.wrapper.querySelector("span") && !this.wrapper.querySelector("style")) { const e = document.createElement("style"), t = document.createElement("span"); e.setAttribute("type", "text/css"), t.addEventListener("click", (() => window.postMessage({ type: "close" }, "*"))), e.innerHTML = '\n.close-button {\n position: absolute;\n right: 15px;\n top: 15px;\n width: 20px;\n height: 20px;\n opacity: 0.6;\n}\n.close-button:hover {\n opacity: 1;\n}\n.close-button:before, .close-button:after {\n position: absolute;\n left: 15px;\n content: " ";\n height: 20px;\n width: 2px;\n background-color: #fff;\n}\n.close-button:before {\n transform: rotate(45deg);\n}\n.close-button:after {\n transform: rotate(-45deg);\n}\n', t.classList.add("close-button"), this.wrapper.appendChild(e), this.wrapper.appendChild(t) } } slideUp() { this.wrapper.style.opacity = 1, this.el.style.bottom = 0 } remove(e) { this.wrapper.style.opacity = "0", window.setTimeout((() => { this.el.parentNode.removeChild(this.el), this.wrapper.style["z-index"] = `-${Ii}`, this.wrapper.style.visibility = "hidden", this.wrapper.style.width = "0", this.wrapper.style.height = "0", document.body.style.overflow = "" }), 220), "function" == typeof e && e() } resize(e) { const t = Math.min(e, .8 * document.documentElement.clientHeight); this.el.style.maxHeight = `${t}px`, this.el.style.minHeight = `${t}px` } } function Ni(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function Ai(e, t) { return e.get(function (e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") }(e, t)) } let Oi = `\n .mercadopago-button {\n padding: 0 ${24 / 14}em;\n font-family: "Helvetica Neue", Arial, sans-serif;\n font-size: 0.875em;\n line-height: ${38 / 14};\n background: #009ee3;\n border-radius: ${4 / 14}em;\n color: #fff;\n cursor: pointer;\n border: 0;\n }\n`; const Di = `\n #CONTAINER_SELECTOR# .mercadopago-button {\n position: relative;\n padding-left: ${68 / 14}em;\n padding-right: ${32 / 14}em;\n white-space: nowrap;\n height: ${38 / 14}em;\n }\n\n #CONTAINER_SELECTOR# .mercadopago-button::before {\n background-image: url("http://static.mlstatic.com/org-img/mercadopago/wallet_mp_icon.svg");\n background-size: ${34 / 14}em ${34 / 14}em;\n width: ${34 / 14}em;\n height: ${34 / 14}em;\n position: absolute;\n top: ${2 / 14}em;\n left: ${2 / 14}em;\n content: "";\n }\n`; var Si = new WeakMap; class ji { constructor(e) { Ni(this, "options", void 0), Ni(this, "el", void 0), Ni(this, "styles", void 0), function (e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) }(this, Si, ((e, t) => t.replace(/#CONTAINER_SELECTOR#/g, e))), this.options = e, this.el = this.create(), this.styles = this.createStyles() } createStyles() { "wallet" === this.options.type && (Oi += Ai(Si, this).call(this, this.options.containerSelector, Di)), "credits" === this.options.type && (Oi += Ai(Si, this).call(this, this.options.containerSelector, '\n @font-face {\n font-family: "Proxima Nova";\n font-weight: 600;\n font-style: normal;\n src: url(https://http2.mlstatic.com/ui/webfonts/v3.0.0/proxima-nova/proximanova-semibold.woff2) format("woff2"), url(https://http2.mlstatic.com/ui/webfonts/v3.0.0/proxima-nova/proximanova-semibold.woff) format("woff"), url(https://http2.mlstatic.com/ui/webfonts/v3.0.0/proxima-nova/proximanova-semibold.ttf) format("truetype")\n }\n\n #CONTAINER_SELECTOR# .mercadopago-button {\n position: relative;\n padding-left: 92px;\n padding-right: 42px;\n padding-top: 16px;\n padding-bottom: 16px;\n height: 72px;\n max-width: 360px;\n line-height: 20px;\n text-align: left;\n font-size: 16px;\n box-shadow: 0px 6px 16px rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n background-color: #fff;\n color: #000;\n font-family: "Proxima Nova";\n }\n\n #CONTAINER_SELECTOR# .mercadopago-button::before {\n background-image: url("http://static.mlstatic.com/org-img/mercadopago/wallet_mp_icon.svg");\n background-size: 32px;\n backgroud-color: #fff;\n background-repeat: no-repeat;\n background-position: center;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 50%;\n width: 40px;\n height: 40px;\n position: absolute;\n top: 16px;\n left: 20px;\n content: "";\n }\n\n #CONTAINER_SELECTOR# .mercadopago-button::after {\n height: 100%;\n position: absolute;\n top: 0;\n left: 80px;\n content: "";\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n }\n')); const e = document.createElement("style"); return e.setAttribute("type", "text/css"), e.innerHTML = Oi, e } create() { const e = document.createElement("button"); return e.setAttribute("type", "submit"), e.className = "mercadopago-button", e.textContent = this.options.label || "Pagar", e.setAttribute("formmethod", "post"), e } render(e) { const t = e.childNodes; 0 === e.childNodes.length ? e.appendChild(this.el) : e.insertBefore(this.el, t[t.length - 1].nextSibling), document.head.appendChild(this.styles) } } const Fi = { toUrl: e => Object.keys(e).map((t => `${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`)).join("&"), toCSS: e => { let t = ""; return void 0 !== e && "object" == typeof e && Object.keys(e).forEach((r => { Object.prototype.hasOwnProperty.call(e, r) && (t += `${r}:${e[r]};`) })), t } }, Li = Fi, Wi = (e, t, r) => { if (e) return e.addEventListener ? e.addEventListener(t, r, !1) : e.attachEvent(`on${t}`, r) }, Yi = { "internal-configurations": "internalConfigurations", "header-color": "theme.headerColor", "elements-color": "theme.elementsColor" }, Ui = { "public-key": "tokenizer.publicKey", "transaction-amount": "tokenizer.totalAmount", "summary-product": "tokenizer.summary.product", "summary-product-label": "tokenizer.summary.productLabel", "summary-discount": "tokenizer.summary.discount", "summary-discount-label": "tokenizer.summary.discountLabel", "summary-charge": "tokenizer.summary.charge", "summary-taxes": "tokenizer.summary.taxes", "summary-arrears": "tokenizer.summary.arrears", "summary-shipping": "tokenizer.summary.shipping", "summary-title": "tokenizer.summary.title", "summary-total-label": "tokenizer.summary.totalLabel", "button-confirm-label": "tokenizer.buttonConfirmLabel", "customer-id": "tokenizer.savedCards.customerId", "payer-id": "tokenizer.savedCards.payerId", "card-ids": "tokenizer.savedCards.cardIds", "default-card-id": "tokenizer.savedCards.defaultCardId", "differential-pricing-id": "tokenizer.differentialPricingId", "excluded-payment-methods": "tokenizer.exclusions.paymentMethods", "excluded-payment-types": "tokenizer.exclusions.paymentTypes", "express-flow": "tokenizer.expressFlow", "processing-modes": "tokenizer.processingModes", "min-installments": "tokenizer.installments.minInstallments", "max-installments": "tokenizer.installments.maxInstallments", "trial-payment": "tokenizer.trialPayment", "alternative-payment": "tokenizer.alternativePayment", action: "tokenizer.backUrl" }, $i = { "preference-id": "preference.id", "summary-title": "summary.title", "summary-total-label": "summary.totalLabel", "button-confirm-label": "buttonConfirmLabel", "total-amount": "preference.totalAmount" }, qi = (e, t) => { const r = {}; return Object.keys(t).filter((e => !I() && "action" !== e || I())).forEach((i => { const n = ((e, t) => t.split(".").reduce(((e, t) => e && e[t] ? e[t] : null), e))(e, t[i]); n && (r[i] = n) })), r }, Vi = function () { return qi(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, { ...Yi, ...$i }) }, zi = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return e.tokenizer.publicKey = c.getPublicKey(), qi(e, { ...Yi, ...Ui }) }, Ki = { MLA: "https://mercadopago.com.ar/checkout/v1/", MLB: "https://mercadopago.com.br/checkout/v1/", MLM: "https://mercadopago.com.mx/checkout/v1/", MLU: "https://mercadopago.com.uy/checkout/v1/", MCO: "https://mercadopago.com.co/checkout/v1/", MLC: "https://mercadopago.cl/checkout/v1/", MPE: "https://mercadopago.com.pe/checkout/v1/", MLV: "https://mercadopago.com.ve/checkout/v1/" }, Bi = async (e, t) => { const r = c.getSiteId(), i = "Failed to get the site id", n = "modal" === e ? "&from-widget=true" : ""; if (r) return `${Ki[r]}${e}?${Li.toUrl(t)}${n}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "domHelper.getHTMLElementFrom", reason: i } }), new Error(i) }, Gi = { wrapper: Li.toCSS({ "z-index": "-2147483647", display: "block", background: "rgba(0, 0, 0, 0.7)", border: "0", overflow: "hidden", visibility: "hidden", margin: "0", padding: "0", position: "fixed", left: "0", top: "0", width: "0", opacity: "0", height: "0", transition: "opacity 220ms ease-in" }), iframe: Li.toCSS({ "z-index": "1", display: "block", position: "fixed", left: "0", top: "0" }) }; function Hi(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function Xi(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Ji(e, t) { return e.get(Qi(e, t)) } function Zi(e, t, r) { return e.set(Qi(e, t), r), r } function Qi(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var en = new WeakMap, tn = new WeakMap, rn = new WeakMap, nn = new WeakMap, on = new WeakMap, an = new WeakMap, sn = new WeakMap, cn = new WeakMap, dn = new WeakMap, ln = new WeakMap, un = new WeakMap, pn = new WeakMap, hn = new WeakMap, mn = new WeakMap, fn = new WeakMap, gn = new WeakMap, yn = new WeakMap, wn = new WeakMap, vn = new WeakMap, bn = new WeakMap, En = new WeakMap; class Tn { constructor(e, t) { Xi(this, en, void 0), Xi(this, tn, void 0), Xi(this, rn, void 0), Xi(this, nn, void 0), Xi(this, on, void 0), Xi(this, an, void 0), Xi(this, sn, void 0), Xi(this, cn, void 0), Xi(this, dn, void 0), Xi(this, ln, void 0), Xi(this, un, void 0), Xi(this, pn, void 0), Xi(this, hn, void 0), Xi(this, mn, void 0), Xi(this, fn, (async e => { let t; return await Ji(hn, this), Ji(on, this) ? (t = zi(e), Zi(an, this, e.tokenizer && e.tokenizer.backUrl ? e.tokenizer.backUrl : null)) : t = Vi(e), Bi(Ji(sn, this), t) })), Xi(this, gn, (e => { e && e.value && Array.isArray(e.value) ? e.value.forEach((e => { "back_url" === e.id ? window.location.href = e.value : Ji(en, this).remove() })) : Ji(en, this).remove(), Zi(pn, this, !1) })), Xi(this, yn, (e => { Ji(on, this) && Ji(vn, this).call(this, e), Ji(en, this).remove() })), Xi(this, wn, (() => { Wi(window, "message", (e => { switch (e.data.type) { case "submit": Ji(yn, this).call(this, e.data); break; case "close": Ji(gn, this).call(this, e.data) } })) })), Xi(this, vn, (e => { Zi(nn, this, document.createElement("form")), Ji(nn, this).action = Ji(an, this), Ji(nn, this).method = "POST", Ji(nn, this).style.visibility = "hidden", e.value.forEach((e => { const t = document.createElement("input"); t.name = e.id, t.value = e.value, Ji(nn, this).appendChild(t) })), document.body.appendChild(Ji(nn, this)), Ji(nn, this).submit() })), Xi(this, bn, (() => { Wi(Ji(rn, this).el, "click", (() => { this.open() })) })), Hi(this, "render", (async e => { await Ji(hn, this), pe.send({ path: "/cho_pro/render", type: pe.TRACK_TYPE_EVENT, eventData: { integration_type: e.type || "default", preference_id: Ji(mn, this) } }); let t = null, r = null; if (Ji(un, this)) throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Checkout.render", reason: 'Already setting "render" from class constructor options' } }), new Error('MercadoPago.js - Already setting "render" from class constructor options'); if (!e.container) throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Checkout.render", reason: "Must specify a container to render the Payment Button" } }), new Error("MercadoPago.js - Must specify a container to render the Payment Button"); Zi(tn, this, document.querySelector(e.container)), e.label && (t = e.label), e.type && (r = e.type), Zi(rn, this, new ji({ label: t, type: r, containerSelector: e.container })), Ji(bn, this).call(this), Ji(rn, this).render(Ji(tn, this)) })), Xi(this, En, (async e => { Zi(mn, this, e.preference?.id || ""), Zi(dn, this, await Ji(fn, this).call(this, e)) })), Hi(this, "open", (async e => { if (await Ji(hn, this), e && await Ji(En, this).call(this, e), pe.send({ path: "/cho_pro/open", type: pe.TRACK_TYPE_EVENT, eventData: { preference_id: Ji(mn, this) } }), !Ji(dn, this)) return Zi(cn, this, !0), console.warn("MercadoPago.js - You are using open() before checkout instantiation has resolved. Try using 'autoOpen' configuration instead"), void pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Checkout.open", reason: "You are using open before checkout" } }); Ji(pn, this) ? console.warn("MercadoPago.js - There is already a checkout instance open") : (Zi(en, this, new xi({ id: Ji(ln, this), src: Ji(dn, this), container: document.body, render: Ji(cn, this), styles: Gi })), "redirect" !== Ji(sn, this) ? (Zi(pn, this, !0), Ji(wn, this).call(this), Ji(en, this).render()) : Ji(dn, this) && (window.location.href = Ji(dn, this))) })), Zi(on, this, !!e.tokenizer), Zi(an, this, null), Zi(sn, this, I() ? "redirect" : "modal"), Zi(cn, this, !!e.autoOpen), Zi(ln, this, "mercadopago-checkout"), Zi(un, this, !1), Zi(pn, this, !1), Zi(hn, this, t), Zi(mn, this, e.preference?.id || ""), e.render && !Ji(cn, this) && this.render({ container: e.render.container, openMode: e.render.openMode, label: e.render.label, type: e.render.type }).then((() => { Zi(un, this, !0) })), (e?.preference?.id || e?.tokenizer) && Ji(fn, this).call(this, e).then((e => { Zi(dn, this, e), Ji(cn, this) && this.open() })).catch((e => { console.warn("MercadoPago.js - There was an error creating a new checkout instance"), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Checkout", reason: "There was an error creating a new checkout instance" } }) })) } } function _n(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function kn(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } function Cn(e, t) { return e.get(Rn(e, t)) } function Mn(e, t, r) { return e.set(Rn(e, t), r), r } function Rn(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var Pn = new WeakMap, In = new WeakMap, xn = new WeakMap, Nn = new WeakMap, An = new WeakMap, On = new WeakMap, Dn = new WeakMap, Sn = new WeakMap, jn = new WeakMap, Fn = new WeakMap, Ln = new WeakMap, Wn = new WeakMap, Yn = new WeakMap, Un = new WeakMap, $n = new WeakMap, qn = new WeakMap, Vn = new WeakMap; class zn { constructor(e, t) { _n(this, Pn, void 0), _n(this, In, void 0), _n(this, xn, void 0), _n(this, Nn, void 0), _n(this, An, void 0), _n(this, On, void 0), _n(this, Dn, void 0), _n(this, Sn, void 0), _n(this, jn, void 0), _n(this, Fn, void 0), _n(this, Ln, (async e => { if (Cn(Nn, this) !== e.locale && (Mn(Nn, this, e.locale), Mn(An, this, await Cn($n, this).call(this))), !Cn(An, this) || !Cn(Sn, this)) { const e = "translations or trackingManager not found"; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_CRITICAL, origin: "BaseBricksComponent.validateSettings", reason: e } }), Error(e) } return { ...e, restClient: Cn(jn, this), translation: Cn(An, this), trackingManager: Cn(Sn, this), siteId: Cn(Fn, this) } })), _n(this, Wn, ((e, t) => { const r = { appName: zn.TRACKING_APP_NAME_PREFIX + Cn(Pn, this), clientName: zn.FRONTEND_METRICS_CLIENT_NAME, version: e || "", siteId: t }; Mn(Sn, this, new de(r)), Cn(Sn, this).melidata().addContext({ scope: "prod" }) })), _n(this, Yn, (async () => Cn(In, this).getSiteId().catch((e => { const t = `Could not fetch site ID: ${e.message}`; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "BaseBricksComponent.fetchSiteID", reason: t } }), new Error(t) })))), _n(this, Un, (async () => Cn(In, this).getBundle(Cn(Pn, this)))), _n(this, $n, (async () => Cn(xn, this).getTranslation(Cn(Pn, this), Cn(Nn, this)))), _n(this, qn, (e => e.default.prototype)), _n(this, Vn, (e => Cn(On, this).getProperty(e, Cn(qn, this)))), Mn(Pn, this, e), Mn(In, this, new ki), Mn(xn, this, new Ri), Mn(On, this, new li), Mn(Nn, this, t), Mn(jn, this, y), Mn(Fn, this, "") } async init() { try { const [e, t, r] = await Promise.all([Cn(Un, this).call(this), Cn($n, this).call(this), Cn(Yn, this).call(this)]); return Mn(An, this, t), Mn(Fn, this, r), Cn(Wn, this).call(this, e.version, Cn(Fn, this)), Mn(Dn, this, Cn(Vn, this).call(this, e.code)), Promise.resolve() } catch (e) { return Promise.reject(e) } } async render(e, t, r) { if (!Cn(Dn, this)) { const e = "Remote component must be initialized before rendering"; throw pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "BaseBricksComponent.render", reason: e } }), new Error(e) } const i = await Cn(Ln, this).call(this, t); try { return r.timing = performance.now() - r.timing, Cn(Sn, this)?.frontendMetrics().sendPerformanceMetric(r), Cn(Dn, this).initialize(e, i) } catch (e) { return console.error(e), Promise.resolve(null) } } } kn(zn, "TRACKING_APP_NAME_PREFIX", "op-checkout-bricks_"), kn(zn, "FRONTEND_METRICS_CLIENT_NAME", "checkout_bricks"); const Kn = ["cardPayment", "payment", "statusScreen", "wallet", "brand"]; function Bn(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Gn(e, t) { return e.get(Xn(e, t)) } function Hn(e, t, r) { return e.set(Xn(e, t), r), r } function Xn(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } let Jn = function (e) { return e.payment = "payment_brick", e.cardPayment = "card_payment_brick", e.wallet = "wallet_brick", e.statusScreen = "status_screen_brick", e.brand = "brand_brick", e }({}); var Zn = new WeakMap, Qn = new WeakMap, eo = new WeakMap, to = new WeakMap, ro = new WeakMap, io = new WeakMap, no = new WeakMap, oo = new WeakMap, ao = new WeakMap; class so { constructor(e, t) { var r = this; Bn(this, Zn, void 0), Bn(this, Qn, void 0), Bn(this, eo, void 0), Bn(this, to, void 0), Bn(this, ro, (e => Kn.includes(e))), Bn(this, io, (e => Jn[e] || "")), Bn(this, no, (function (e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = { ...t, sdkInstance: Gn(eo, r), publicKey: c.getPublicKey(), productId: c.getProductId(), bundleBaseUrl: gi().bundleApiBaseUrl, apiBaseUrl: gi().apiBaseUrl, isMobile: I(), locale: t.locale || c.getLocale() }; if (i.customization?.visual?.style) { const { style: e } = i.customization.visual, t = e.theme || Gn(to, r).theme, n = e.customVariables || Gn(to, r).customVariables; i.customization.visual.style = { ...t && { theme: t }, ...n && { customVariables: n } } } else i.customization = { ...i.customization || {}, visual: { ...i.customization?.visual, style: Gn(to, r) } }; return "wallet" === e && (i = Gn(oo, r).call(r, i)), i })), Bn(this, oo, (e => ({ ...e, checkout: new Tn({ preference: { id: "" } }, new Promise((e => { e() }))) }))), Bn(this, ao, (async (e, t, r, i) => e.render(t, r, i))), Hn(to, this, e || {}), Hn(eo, this, t), Hn(Qn, this, {}), Hn(Zn, this, !0) } isInitialized() { return Gn(Zn, this) } async create(e, t, r) { const i = performance.now(); if (!Gn(ro, this).call(this, e)) return console.error(`[BRICKS]: component name: ${e} is invalid.`), Promise.resolve(null); const n = Gn(io, this).call(this, e); c.setProductId(fe(n)); let o = Gn(Qn, this)[e]; const a = Gn(no, this).call(this, e, r); if (!o) { o = function (e, t) { return new zn(e, t) }(e, a.locale); try { await o.init() } catch (e) { return console.error(e), Promise.resolve(null) } Gn(Qn, this)[e] = o } const s = { product: n, timing: i, name: "sdk_init" }; return Gn(ao, this).call(this, o, t, a, s) } } const co = class { createYape(e) { return (async e => { const t = { requestId: C(), ...e }, r = await y.fetch("/platforms/pci/yape/v1/payment", { baseURL: "https://api.mercadopago.com", retry: 0, method: "POST", body: JSON.stringify(t) }); return await r.json() })(e) } }; function lo(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function uo(e, t) { return e.get(ho(e, t)) } function po(e, t, r) { return e.set(ho(e, t), r), r } function ho(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var mo = new WeakMap, fo = new WeakMap; class go { constructor(e) { lo(this, mo, void 0), lo(this, fo, void 0), po(fo, this, e), po(mo, this, new co) } async create() { try { return pe.send({ path: "/yape/create_token", type: pe.TRACK_TYPE_EVENT }), await uo(mo, this).createYape(uo(fo, this)) } catch (e) { return Promise.reject(e) } } } const yo = ["public_key", "email", "totalAmount", "action", "cancelURL"], wo = /^(https?):\/\/[^\s$.?#].[^\s]*$/; let vo = function (e) { return e.email = "email", e.action = "action", e.totalAmount = "total_amount", e.cancelURL = "cancel_url", e.public_key = "public_key", e }({}); const bo = [{ path: "root", name: "type", type: "string", acceptedValues: ["webpay"], required: !0 }, { path: "root", name: "email", type: "string", required: !0, pattern: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ }, { path: "root", name: "totalAmount", type: "number", required: !0 }, { path: "root", name: "action", type: "string", required: !0, pattern: wo }, { path: "root", name: "cancelURL", type: "string", required: !0, pattern: wo }]; function Eo(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var To, _o, ko, Co = new WeakMap; class Mo { constructor() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : { type: "", email: "", action: "", totalAmount: "" }; (function (e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) })(this, Co, void 0), e.cancelURL || (e.cancelURL = window.top?.location.href || window.location.href); const t = (e => { const t = new ni; return bo.forEach((r => { let { name: i, type: n, required: o, path: a, acceptedValues: s, pattern: c } = r; const d = "root" === a ? e[i] : e[a]?.[i], l = typeof d, u = (e => Gr[e]?.invalid || Gr.default)(i); !d && o && t.addError({ ...u, description: `Required field "${i}" is missing` }), d && (l !== n && t.addError({ ...u, description: `Type of ${i} must be ${n}. Received ${l}` }), s && !s.includes(d) && t.addError({ ...u, description: `Invalid option value "${d}". Available option(s): ${s.join(" or ")}` }), c && !c.test(d) && t.addError({ ...u, description: `Invalid parameter "${i}"` })) })), t.getErrors() })(e); if (t.length) throw t; var r, i; i = e, (r = Co).set(Eo(r, this), i) } open() { pe.send({ path: "/tokenizer/open_url", type: pe.TRACK_TYPE_EVENT }), window.location.href = this.getRedirectURL() } getRedirectURL() { return pe.send({ path: "/tokenizer/generate_url", type: pe.TRACK_TYPE_EVENT }), (e => { const t = new URL("https://www.mercadopago.cl/webpay-one-click/init"), r = (e, r) => { r && t.searchParams.append(vo[e], r) }; return yo.forEach((t => { if (Array.isArray(t)) { const [i, n] = t; e[i] && e[i][n] && r(n, e[i][n]) } else r(t, e[t]) })), t.href })({ public_key: c.getPublicKey(), ...(e = Co, this, e.get(Eo(e, this))) }); var e } } function Ro(e, t, r) { return t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e } class Po { static isNumericText(e) { return this.NUMERIC_TEXT_REGEX.test(e) } static isRepeatedDigitText(e) { return this.DIGITS_SEQUENCE_REGEX.test(e) } static isAlphaNumeric(e) { return this.ALPHA_NUMERIC_REGEX.test(e) } static getNextCheckDigitMLB(e) { const t = e.split("").map((e => Number(e))); let r = 0, i = 2; for (let e = t.length - 1; e >= 0; e--)r += t[e] * i, i = 9 == i && t.length > 11 ? 2 : i + 1; const n = r % 11; return n < 2 ? 0 : 11 - n } } Ro(Po, "NUMERIC_TEXT_REGEX", /^\d*$/), Ro(Po, "DIGITS_SEQUENCE_REGEX", /^(\d)\1*$/), Ro(Po, "ALPHA_NUMERIC_REGEX", /^[a-zA-Z0-9]+$/); class Io { validate(e) { if (!Po.isNumericText(e)) return !1; if (7 != e.length && 8 != e.length) return !1; const t = parseInt(e[e.length - 1]); let r = 0; for (let t = 0; t < e.length - 1; t++)r += parseInt(e.substring(t, t + 1)) * Io.ALGORITHM_FACTORS[t]; return t === (10 - r % 10) % 10 } } To = Io, ko = [2, 9, 8, 7, 6, 3, 4], _o = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(_o = "ALGORITHM_FACTORS"), _o in To ? Object.defineProperty(To, _o, { value: ko, enumerable: !0, configurable: !0, writable: !0 }) : To[_o] = ko; class xo { validate(e) { if (!Po.isNumericText(e)) return !1; if (e.length != this.getDocumentLength()) return !1; if (Po.isRepeatedDigitText(e)) return !1; const t = this.getDocumentLength() - 1, r = Po.getNextCheckDigitMLB(e.substring(0, t - 1)), i = Po.getNextCheckDigitMLB(e.substring(0, t)); return e === e.substring(0, t - 1) + r + i } } class No extends xo { getDocumentLength() { return No.DOCUMENT_LENGTH } } !function (e, t, r) { t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: 14, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = 14 }(No, "DOCUMENT_LENGTH"); class Ao extends xo { getDocumentLength() { return Ao.DOCUMENT_LENGTH } } function Oo(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Do(e, t) { return e.get(jo(e, t)) } function So(e, t, r) { return e.set(jo(e, t), r), r } function jo(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } !function (e, t, r) { t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: 11, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = 11 }(Ao, "DOCUMENT_LENGTH"); var Fo = new WeakMap, Lo = new WeakMap; class Wo { constructor(e, t) { Oo(this, Fo, void 0), Oo(this, Lo, void 0), So(Fo, this, e), So(Lo, this, t) } validate(e) { return !(!Po.isNumericText(e) || Po.isRepeatedDigitText(e)) && e.length >= Do(Fo, this) && e.length <= Do(Lo, this) } } function Yo(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Uo(e, t) { return e.get(qo(e, t)) } function $o(e, t, r) { return e.set(qo(e, t), r), r } function qo(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var Vo = new WeakMap, zo = new WeakMap; class Ko { constructor(e, t) { Yo(this, Vo, void 0), Yo(this, zo, void 0), $o(Vo, this, e), $o(zo, this, t) } validate(e) { return !(!Po.isAlphaNumeric(e) || Po.isRepeatedDigitText(e)) && e.length >= Uo(Vo, this) && e.length <= Uo(zo, this) } } class Bo { validate(e) { const t = e.replace(".", "").replace("-", ""), r = t.slice(0, -1); let i = t.slice(-1).toUpperCase(); if (r.length < 7) return !1; let n = 0, o = 2; for (let e = 1; e <= r.length; e++)n += o * Number(t.charAt(r.length - e)), o = o < 7 ? o + 1 : 2; const a = String(11 - n % 11); return "K" === i && (i = "10"), 0 === Number(i) && (i = "11"), a === i } } const Go = e => { pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Validators.getDocumentValidator", reason: e } }) }; function Ho(e, t, r) { !function (e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object") }(e, t), t.set(e, r) } function Xo(e, t, r) { return e.set(Zo(e, t), r), r } function Jo(e, t) { return e.get(Zo(e, t)) } function Zo(e, t, r) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : r; throw new TypeError("Private element is not present on this object") } var Qo = new WeakMap, ea = new WeakMap, ta = new WeakMap, ra = new WeakMap, ia = new WeakMap, na = new WeakMap, oa = new WeakMap, aa = new WeakMap, sa = new WeakMap, ca = new WeakMap, da = new WeakMap, la = new WeakMap, ua = new WeakMap, pa = new WeakMap; window.MercadoPago = class { constructor(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; Ho(this, Qo, void 0), Ho(this, ea, void 0), Ho(this, ta, void 0), Ho(this, ra, void 0), Ho(this, ia, void 0), Ho(this, na, void 0), function (e, t, r) { t = function (e) { var t = function (e, t) { if ("object" != typeof e || !e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var i = r.call(e, "string"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value.") } return String(e) }(e); return "symbol" == typeof t ? t : t + "" }(t), t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r }(this, "fields", { create: (e, t) => (c.setIframeEnabled(!0), Jo(ta, this).fields.create(e, Jo(ia, this), t)), createCardToken: async (e, t) => { pe.send({ path: "/core_methods/create_card_token", type: pe.TRACK_TYPE_EVENT, eventData: { is_iframe: c.getIframeEnabled() } }); const r = this.formatTokenOptions(t); return Jo(ta, this).fields.createCardToken(e, Jo(ia, this), r) }, updateCardToken: async (e, t) => { pe.send({ path: "/core_methods/update_card_token", type: pe.TRACK_TYPE_EVENT, eventData: { is_iframe: c.getIframeEnabled() } }); const r = this.formatTokenOptions(t); return Jo(ta, this).fields.updateCardToken(e, Jo(ia, this), r) } }), Ho(this, oa, (e => { const t = (e => { const t = typeof e; return "string" !== t ? new Error(`MercadoPago.js - Type of public_key must be string. Received ${t}`) : /\s/g.test(e) ? new Error("MercadoPago.js - Your public_key is invalid, as it contains whitespaces.") : void 0 })(e); if (t) throw t })), Ho(this, aa, (e => { const t = (e => { const t = new ni, { locale: r, advancedFraudPrevention: i } = e; if (r && ("string" != typeof r && t.addError({ ...Gr.default, description: "Type of locale must be string. Received " + typeof r }), !Object.keys(n).includes(r))) { let e = Object.keys(n).find((e => e.toLowerCase().startsWith(r))); e = e ? "es" === r.toLowerCase() ? "es-CO" : e : "en-US", c.setLocale(e), console.warn(`The requested language '${r}' is not supported, the server retrieved the fallback language '${e}'.`) } return i && "boolean" != typeof i && t.addError({ ...Gr.default, description: "Type of advancedFraudPrevention must be boolean. Received " + typeof i }), t.getErrors() })(e); if (t.length) throw console.warn("MercadoPago.js - Invalid options: ", t), t.forEach((e => { pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_INTEGRATION, origin: "Core.validateOptions", reason: e.description } }) })), new Error("MercadoPago.js could not be loaded") })), Ho(this, sa, (e => Object.assign({ locale: ti(), advancedFraudPrevention: !0, trackingDisabled: !1 }, e))), Ho(this, ca, (async () => { Xo(ra, this, new we), Xo(ta, this, new Kr({ services: Jo(ra, this) })), await (async e => { if (c.getSiteId()) return; const t = c.getPublicKey(), r = (await e.getPaymentMethods({ limit: 1, public_key: t })).results.find((e => e.site_id)), i = r?.site_id; i && c.setSiteId(i) })(Jo(ra, this)), await Jo(da, this).call(this), pe.setContext({ siteId: c.getSiteId(), advancedFraudPrevention: Jo(Qo, this).advancedFraudPrevention, locale: Jo(Qo, this).locale, publicKey: c.getPublicKey(), version: "2" }) })), Ho(this, da, (async () => { try { return await new Promise(((e, t) => { const i = window.navigator.userAgent || window.navigator.vendor, n = I(i), o = n ? "sdk-js-checkout-mobile" : "sdk-js-checkout-web", a = n ? "BCLQ07IBVKH001FP9VCG" : "BCHJ1GABVKH001FP9V4G", s = document.createElement("script"); s.src = "https://http2.mlstatic.com/storage/event-metrics-sdk/js", s.type = "text/javascript", s.async = !0, s.setAttribute("data-client-info-name", "MercadoPago-SDK-Javascript"), s.setAttribute("data-client-info-version", r), s.setAttribute("data-business-flow-name", o), s.setAttribute("data-business-flow-uid", a), s.setAttribute("data-event-info-name", "checkout"), s.setAttribute("data-event-info-source", function () { const e = window.crypto || window.msCrypto; if (void 0 === e || void 0 === window.Uint32Array) return ""; const t = new Uint32Array(8); e.getRandomValues(t); let r = ""; for (let e = 0; e < t.length; e++)r += (e < 2 || e > 5 ? "" : "-") + t[e].toString(16).slice(-4); return r }()), document.head.appendChild(s), s.onload = () => e(), s.onerror = e => t(e) })), Promise.resolve() } catch (e) { return console.warn("MercadoPago.js - SRE Metrics could not be loaded", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "Core.setupMetricsSDK", reason: "SRE Metrics could not be loaded" } }), Promise.resolve() } })), Ho(this, la, (async (e, t) => { await Jo(ea, this), Jo(na, this) || pe.send({ path: `${e || ""}`, type: pe.TRACK_TYPE_VIEW, eventData: t }), e && Xo(na, this, !0) })), Ho(this, ua, (async e => { await Jo(la, this).call(this, "/core_methods", { is_iframe: c.getIframeEnabled() }), pe.send({ path: `/core_methods${e}`, type: pe.TRACK_TYPE_EVENT, eventData: { is_iframe: c.getIframeEnabled() } }) })), Ho(this, pa, (async () => { try { const { advancedFraudPrevention: e } = Jo(Qo, this); if (!e) return Promise.resolve(); const t = await (async () => { try { const e = await y.fetch("/devices/widgets", { method: "POST", body: JSON.stringify({ section: "open_platform_V2", view: "checkout" }) }), t = await e.json(), r = document.createElement("script"); return r.appendChild(document.createTextNode(t.widget.replace(//gi, "").replace(/<\/script>[\s\S]*/gi, ""))), document.head.appendChild(r), Promise.resolve(t.session_id) } catch (e) { return Promise.reject(e) } })(); return c.setDeviceProfile(t), Promise.resolve() } catch (e) { return console.warn("MercadoPago.js - DeviceProfile could not be loaded", e), pe.sendError({ type: pe.TRACK_TYPE_EVENT, eventData: { type: pe.ERROR_TYPE_WARNING, origin: "Core.setupDeviceProfile", reason: "DeviceProfile could not be loaded" } }), Promise.resolve() } })), Jo(oa, this).call(this, e), Jo(aa, this).call(this, t), Xo(Qo, this, Jo(sa, this).call(this, t)), Xo(ia, this, new xt), Xo(na, this, !1), t.siteId && c.setSiteId(t.siteId), c.setPublicKey(e), c.setLocale(Jo(Qo, this).locale), c.setIframeEnabled(!1), c.setTrackingDisabled(Jo(Qo, this).trackingDisabled), c.setFrontendStack(Jo(Qo, this).frontEndStack), c.setProductId(fe()), Xo(ea, this, Jo(ca, this).call(this)), Jo(la, this).call(this, "", { success: !0, frontEndStack: c.getFrontendStack() }), Jo(pa, this).call(this) } async getIdentificationTypes() { return await Jo(ea, this), await Jo(ua, this).call(this, "/identification_types"), Jo(ta, this).getIdentificationTypes() } async getPaymentMethods(e) { return await Jo(ea, this), await Jo(ua, this).call(this, "/payment_methods"), Jo(ta, this).getPaymentMethods(e) } async getIssuers(e) { return await Jo(ea, this), await Jo(ua, this).call(this, "/issuers"), Jo(ta, this).getIssuers(e) } async getInstallments(e) { return await Jo(ea, this), await Jo(ua, this).call(this, "/installments"), Jo(ta, this).getInstallments(e) } async createCardToken(e, t) { return await Jo(ea, this), await Jo(ua, this).call(this, "/create_card_token"), Jo(ta, this).createCardToken(e, t) } async updateCardToken(e, t) { return await Jo(ea, this), await Jo(ua, this).call(this, "/update_card_token"), Jo(ta, this).updateCardToken(e, t) } getDocumentValidator(e, t, r) { return function (e, t, r) { switch (e) { case "CPF": return new Ao; case "CNPJ": return new No; case "CI": return new Io; case "RUT": return new Bo; case "Otro": if (!t || !r) { const e = "Invalid value of minLength or maxLength for other validator"; throw Go(e), new Error(e) } return new Ko(t, r); default: if (!t || !r) { const e = "Invalid value of minLength or maxLength for general validator"; throw Go(e), new Error(e) } return new Wo(t, r) } }(e, t, r) } formatTokenOptions(e) { return "object" != typeof e ? { productId: e, group: St } : e } bricks(e) { return new so(e, this) } cardForm(e) { return Jo(la, this).call(this, "/card_form", { is_iframe: Boolean(e.iframe) }), new Or(e, Jo(ea, this)) } checkout(e) { return Jo(la, this).call(this, "/cho_pro", { preference_id: e.preference?.id || "" }), new Tn(e, Jo(ea, this)) } tokenizer(e) { return Jo(la, this).call(this, "/tokenizer"), new Mo(e) } yape(e) { return Jo(la, this).call(this, "/yape"), new go(e) } } })() })(); \ No newline at end of file diff --git a/Public/js/lknmp-gateway-givewp-public.js b/Public/js/lknmp-gateway-givewp-public.js index 74512aa..c1a2240 100755 --- a/Public/js/lknmp-gateway-givewp-public.js +++ b/Public/js/lknmp-gateway-givewp-public.js @@ -33,12 +33,19 @@ } async function criarPreferenciaDePagamento() { - const amountGive = document.getElementsByName('give-amount')[0]; if (lknmpGlobals.advDebug == 'enabled') { console.log(amountGive.value); } - let amount = amountGive.value; + let valorText + const proAmount = document.querySelector('input[name="custom_amount"]') + if(proAmount) { + valorText = proAmount.value + } else { + valorText = document.getElementsByName('give-amount')[0].value + } + + let amount = valorText if (lknmpGlobals.advDebug == 'enabled') { console.log(amount) diff --git a/Public/js/plugin-script.js b/Public/js/plugin-script.js index 034a6cc..911a3f3 100755 --- a/Public/js/plugin-script.js +++ b/Public/js/plugin-script.js @@ -1,383 +1,390 @@ -let preferenceID = null; -let hasRenderedComponents = false; -let OneLoad = true; -let showMP = true; - -function renderComponentsOnce() { - if (!hasRenderedComponents) { - const tryRender = () => { - criarPreferenciaDePagamento() - .then(preferenceID => { - if (configData.advDebug == 'enabled') { - console.log('ID da preferência criada:', preferenceID); - } - preferenceID = preferenceID; - const mp = new MercadoPago(configData.key); - //TODO se houver erro 400, temos que retornar ao usuário??? - const bricksBuilder = mp.bricks(); - mp.bricks().create("wallet", "wallet_container", { - initialization: { - preferenceId: preferenceID, - redirectMode: "blank" - }, - customization: { - texts: { - valueProp: 'smart_option' - } - } - }); - }) - .catch(error => { - console.error('Erro ao criar preferência de pagamento:', error); - }); - - if (OneLoad) { - setTimeout(updateDonationAmount, 0); - setTimeout(checkInputs, 0); - observeDonationChanges(); - observeFormChanges(); - observeMetodoChanges(); - if (document.querySelector('.givewp-donation-form__steps-header-previous')) { - observeButtonChanges(); - } - OneLoad = false; - } - hasRenderedComponents = true; - }; - - const interval = setInterval(() => { - if (document.readyState === 'complete') { - clearInterval(interval); - if (OneLoad || !hasRenderedComponents) { - tryRender(); - } - } - }, 100); - } -} - -function sanitizeInput(input) { - if (typeof input === 'string') { - return input.replace(/<[^>]*>/g, '').trim(); - } - else if (typeof input === 'number') { - return parseFloat(input.toString().replace(/\D/g, '')); - } - else { - return input; - } -} - -async function criarPreferenciaDePagamento() { - const url = 'https://api.mercadopago.com/checkout/preferences'; - - // Obter valores dos campos HTML - const nome = sanitizeInput(document.querySelector('input[name="firstName"]').value); - const sobrenome = sanitizeInput(document.querySelector('input[name="lastName"]').value); - const email = sanitizeInput(document.querySelector('input[name="email"]').value); - - const valorText = document.querySelector('.givewp-elements-donationSummary__list__item__value').textContent; - const valorNumerico = parseFloat(valorText.replace(/[^\d.,]/g, '')); - - if (configData.advDebug == 'enabled') { - console.log(valorNumerico) - } - - const preference = { - "back_urls": { - "success": `${urlPag}/wp-json/lknmp/v1/payments/checkpayment?id=${idUnique}&statusFront=1`, - "pending": `${urlPag}/wp-json/lknmp/v1/payments/checkpayment?id=${idUnique}&statusFront=2`, - "failure": `${urlPag}/wp-json/lknmp/v1/payments/checkpayment?id=${idUnique}&statusFront=3` //ALTERAR AQUI DEPOIS!!! - }, - "auto_return": "approved", - "items": [{ - "id": `Doação X ${idUnique}`, - "title": `${configData.tittle}`, - "description": `${configData.description}`, - "quantity": 1, - "currency_id": "BRL", - "unit_price": valorNumerico - }] - }; - try { - const response = await fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${configData.token}` - }, - body: JSON.stringify(preference) - }); - if (!response.ok) { - throw new Error(`Erro ao criar preferência de pagamento: ${response.status}`); - } - const data = await response.json(); - return data.id; - } catch (error) { - console.error('Erro ao criar preferência de pagamento:', error); - throw error; - } -} - -function mutationBack() { - const button = document.querySelector('.givewp-donation-form__steps-header-previous-button'); - - if (button) { - button.addEventListener('click', function (event) { - event.preventDefault(); - location.reload(); - }); - } -} - -function observeButtonChanges() { - const observer = new MutationObserver((mutationsList, observer) => { - mutationsList.forEach(mutation => { - if (mutation.type === 'childList') { - mutationBack(); - } - }); - }); - - const config = { childList: true, subtree: true }; - const targetNode = document.body; - observer.observe(targetNode, config); - mutationBack(); -} - -function updateDonationAmount() { - const fieldValueElement = document.querySelector('.givewp-elements-donationSummary__list__item__value'); - const donationAmountElement = document.querySelector('#donation-amount'); - if (fieldValueElement && donationAmountElement) { - const fieldValue = fieldValueElement.textContent; - donationAmountElement.textContent = fieldValue; - } -} - -function observeMetodoChanges() { - const checkGateways = () => { - const myGateway = document.querySelector('.givewp-fields-gateways__gateway.givewp-fields-gateways__gateway--lknmp-gateway-givewp.givewp-fields-gateways__gateway--active'); - - // Se ele estiver ativo, habilita o botão Donate Now - if (myGateway) { - document.querySelector('button[type="submit"]').disabled = true; - } else { - document.querySelector('button[type="submit"]').disabled = false; - hasRenderedComponents = false; - } - updateDonationAmount(); - checkInputs(); - }; - - checkGateways(); - - const observer = new MutationObserver((mutationsList, observer) => { - checkGateways(); - }); - - const targetNode = document.querySelector('.givewp-fields-gateways'); - - const config = { childList: true, subtree: true }; - - observer.observe(targetNode, config); -} - -function debounce(func, delay) { - let timer; - return function () { - const context = this; - const args = arguments; - clearTimeout(timer); - timer = setTimeout(() => { - func.apply(context, args); - }, delay); - }; -} - -function observeDonationChanges() { - const targetNode = document.querySelector('.givewp-elements-donationSummary__list__item__value'); - if (!targetNode) return; - - const observer = new MutationObserver(debounce(function (mutationsList, observer) { - for (const mutation of mutationsList) { - if (mutation.type === 'childList' || mutation.type === 'characterData') { - updateDonationAmount(); - - const nomeInput = document.querySelector('input[name="firstName"]'); - const emailInput = document.querySelector('input[name="email"]'); - const oldButton = document.querySelector('#wallet_container'); - - if (oldButton) { - oldButton.remove(); - if (configData.advDebug == 'enabled') { - console.log('botao removido') - } - } - - criarPreferenciaDePagamento().then(newPreferenceID => { - - if (configData.advDebug == 'enabled') { - console.log('Nova preferência criada:', newPreferenceID); - } - - preferenceID = newPreferenceID; - - const newButton = document.createElement('div'); - newButton.id = 'wallet_container'; - const fieldset = document.querySelector('.no-fields-lknmp'); - - if (showMP) { - newButton.style.display = 'block'; - } else { - newButton.style.display = 'none'; - } - - fieldset.appendChild(newButton); - - const mp = new MercadoPago(configData.key); - const bricksBuilder = mp.bricks(); - mp.bricks().create("wallet", "wallet_container", { - initialization: { - preferenceId: preferenceID, - redirectMode: "blank" - }, - customization: { - texts: { - valueProp: 'smart_option' - } - } - }); - - }).catch(error => { - console.error('Erro ao criar nova preferência de pagamento:', error); - }); - } - } - }, 500)); // Atraso de 500 milissegundos - - observer.observe(targetNode, { - attributes: true, - childList: true, - subtree: true, - characterData: true - }); -} - -function observeFormChanges() { - const nomeInput = document.querySelector('input[name="firstName"]'); - const emailInput = document.querySelector('input[name="email"]'); - if (nomeInput && emailInput) { - nomeInput.addEventListener('input', checkInputs); - emailInput.addEventListener('input', checkInputs); - } -} -function checkInputs() { - const nomeInput = document.querySelector('input[name="firstName"]'); - const emailInput = document.querySelector('input[name="email"]'); - const walletContainer = document.querySelector('#wallet_container'); - let warningText = document.querySelector('#warning-text'); - - function isValidEmail(email) { - const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - return emailPattern.test(email); - } - - if (nomeInput && emailInput && walletContainer) { - if (!nomeInput.value.trim()) { - walletContainer.style.display = 'none'; - warningText.textContent = lknMercadoPagoGlobals.MenssageErrorNameEmpty; - showMP = false; - } else if (nomeInput.value.trim().length < 3) { - walletContainer.style.display = 'none'; - warningText.textContent = lknMercadoPagoGlobals.MenssageErrorName; - showMP = false; - } else if (!emailInput.value.trim()) { - walletContainer.style.display = 'none'; - warningText.textContent = lknMercadoPagoGlobals.MenssageErrorEmailEmpty; - showMP = false; - - } else if (!isValidEmail(emailInput.value)) { - walletContainer.style.display = 'none'; - warningText.textContent = lknMercadoPagoGlobals.MenssageErrorEmailInvalid; - showMP = false; - } else { - walletContainer.style.display = 'block'; - warningText.textContent = ''; - showMP = true; - } - } -} -const LknmpGatewayGiveWP = { - id: 'lknmp-gateway-givewp', - async initialize() { - // Aqui vai todas as funções necessárias ao carregar a página de pagamento - }, - async beforeCreatePayment(values) { - // Aqui vai tudo que precisa rodar depois de submeter o formulário e antes do pagamento ser completado - // Ponha validações e adicione atributos que você vai precisar no back-end aqui - - // Caso detecte algum erro de validação você pode adicionar uma exceção - // A mensagem de erro aparecerá para o cliente já formatada - - - // Retorna os atributos usados pelo back-end - // Atributos do objeto value já são passados por padrão - - if (values.firstname === 'error') { - throw new Error('Gateway failed'); - } - - return { - gatewayId: idUnique - }; - - }, - async afterCreatePayment(response) { - //Depois da criação do pagamento - }, - // Função onde os campos HTML são criados - Fields() { - - function lknMercadoPagoprintFrontendNotice(title, message) { - return /*#__PURE__*/React.createElement("div", { - className: "error-notice" - }, /*#__PURE__*/React.createElement("strong", null, title), " ", message); - } - - if (lknMercadoPagoGlobals.token == 'false') { - return lknMercadoPagoprintFrontendNotice('Erro:', lknMercadoPagoGlobals.MenssageErrorToken); - } else if (lknMercadoPagoGlobals.publicKey == 'false') { - return lknMercadoPagoprintFrontendNotice('Erro:', lknMercadoPagoGlobals.MenssageErrorPublicKey); - } else { - - if (!hasRenderedComponents) { - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', function () { - renderComponentsOnce(); - }); - } else { - renderComponentsOnce(); - } - } else { - //observeButtonChanges já está cumprindo a função de recarregar o formulário - updateDonationAmount(); - - const oldButton = document.querySelector('#wallet_container'); - if (oldButton) { - oldButton.remove(); - } - } - - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("fieldset", { - className: "no-fields-lknmp" - }, /*#__PURE__*/React.createElement("h1", null, lknMercadoPagoGlobals.MenssageDonation, /*#__PURE__*/React.createElement("span", { - id: "donation-amount" - })), /*#__PURE__*/React.createElement("h3", { - id: "warning-text" - }), /*#__PURE__*/React.createElement("div", { - id: "wallet_container" - }))); - } - } -}; +let preferenceID = null; +let hasRenderedComponents = false; +let OneLoad = true; +let showMP = true; + +function renderComponentsOnce() { + if (!hasRenderedComponents) { + const tryRender = () => { + criarPreferenciaDePagamento() + .then(preferenceID => { + if (configData.advDebug == 'enabled') { + console.log('ID da preferência criada:', preferenceID); + } + preferenceID = preferenceID; + const mp = new MercadoPago(configData.key); + //TODO se houver erro 400, temos que retornar ao usuário??? + const bricksBuilder = mp.bricks(); + mp.bricks().create("wallet", "wallet_container", { + initialization: { + preferenceId: preferenceID, + redirectMode: "blank" + }, + customization: { + texts: { + valueProp: 'smart_option' + } + } + }); + }) + .catch(error => { + console.error('Erro ao criar preferência de pagamento:', error); + }); + + if (OneLoad) { + setTimeout(updateDonationAmount, 0); + setTimeout(checkInputs, 0); + observeDonationChanges(); + observeFormChanges(); + observeMetodoChanges(); + if (document.querySelector('.givewp-donation-form__steps-header-previous')) { + observeButtonChanges(); + } + OneLoad = false; + } + hasRenderedComponents = true; + }; + + const interval = setInterval(() => { + if (document.readyState === 'complete') { + clearInterval(interval); + if (OneLoad || !hasRenderedComponents) { + tryRender(); + } + } + }, 100); + } +} + +function sanitizeInput(input) { + if (typeof input === 'string') { + return input.replace(/<[^>]*>/g, '').trim(); + } + else if (typeof input === 'number') { + return parseFloat(input.toString().replace(/\D/g, '')); + } + else { + return input; + } +} + +async function criarPreferenciaDePagamento() { + const url = 'https://api.mercadopago.com/checkout/preferences'; + + // Obter valores dos campos HTML + const nome = sanitizeInput(document.querySelector('input[name="firstName"]').value); + const sobrenome = sanitizeInput(document.querySelector('input[name="lastName"]').value); + const email = sanitizeInput(document.querySelector('input[name="email"]').value); + + let valorText + const proAmount = document.querySelector('input[name="custom_amount"]'); + if(proAmount) { + valorText = proAmount.value + } else { + valorText = document.querySelector('.givewp-elements-donationSummary__list__item__value').textContent; + } + + const valorNumerico = parseFloat(valorText.replace(/[^\d.,]/g, '')); + + if (configData.advDebug == 'enabled') { + console.log(valorNumerico) + } + + const preference = { + "back_urls": { + "success": `${urlPag}/wp-json/lknmp/v1/payments/checkpayment?id=${idUnique}&statusFront=1`, + "pending": `${urlPag}/wp-json/lknmp/v1/payments/checkpayment?id=${idUnique}&statusFront=2`, + "failure": `${urlPag}/wp-json/lknmp/v1/payments/checkpayment?id=${idUnique}&statusFront=3` //ALTERAR AQUI DEPOIS!!! + }, + "auto_return": "approved", + "items": [{ + "id": `Doação X ${idUnique}`, + "title": `${configData.tittle}`, + "description": `${configData.description}`, + "quantity": 1, + "currency_id": "BRL", + "unit_price": valorNumerico + }] + }; + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${configData.token}` + }, + body: JSON.stringify(preference) + }); + if (!response.ok) { + throw new Error(`Erro ao criar preferência de pagamento: ${response.status}`); + } + const data = await response.json(); + return data.id; + } catch (error) { + console.error('Erro ao criar preferência de pagamento:', error); + throw error; + } +} + +function mutationBack() { + const button = document.querySelector('.givewp-donation-form__steps-header-previous-button'); + + if (button) { + button.addEventListener('click', function (event) { + event.preventDefault(); + location.reload(); + }); + } +} + +function observeButtonChanges() { + const observer = new MutationObserver((mutationsList, observer) => { + mutationsList.forEach(mutation => { + if (mutation.type === 'childList') { + mutationBack(); + } + }); + }); + + const config = { childList: true, subtree: true }; + const targetNode = document.body; + observer.observe(targetNode, config); + mutationBack(); +} + +function updateDonationAmount() { + const fieldValueElement = document.querySelector('.givewp-elements-donationSummary__list__item__value'); + const donationAmountElement = document.querySelector('#donation-amount'); + if (fieldValueElement && donationAmountElement) { + const fieldValue = fieldValueElement.textContent; + donationAmountElement.textContent = fieldValue; + } +} + +function observeMetodoChanges() { + const checkGateways = () => { + const myGateway = document.querySelector('.givewp-fields-gateways__gateway.givewp-fields-gateways__gateway--lknmp-gateway-givewp.givewp-fields-gateways__gateway--active'); + + // Se ele estiver ativo, habilita o botão Donate Now + if (myGateway) { + document.querySelector('button[type="submit"]').disabled = true; + } else { + document.querySelector('button[type="submit"]').disabled = false; + hasRenderedComponents = false; + } + updateDonationAmount(); + checkInputs(); + }; + + checkGateways(); + + const observer = new MutationObserver((mutationsList, observer) => { + checkGateways(); + }); + + const targetNode = document.querySelector('.givewp-fields-gateways'); + + const config = { childList: true, subtree: true }; + + observer.observe(targetNode, config); +} + +function debounce(func, delay) { + let timer; + return function () { + const context = this; + const args = arguments; + clearTimeout(timer); + timer = setTimeout(() => { + func.apply(context, args); + }, delay); + }; +} + +function observeDonationChanges() { + const targetNode = document.querySelector('.givewp-elements-donationSummary__list__item__value'); + if (!targetNode) return; + + const observer = new MutationObserver(debounce(function (mutationsList, observer) { + for (const mutation of mutationsList) { + if (mutation.type === 'childList' || mutation.type === 'characterData') { + updateDonationAmount(); + + const nomeInput = document.querySelector('input[name="firstName"]'); + const emailInput = document.querySelector('input[name="email"]'); + const oldButton = document.querySelector('#wallet_container'); + + if (oldButton) { + oldButton.remove(); + if (configData.advDebug == 'enabled') { + console.log('botao removido') + } + } + + criarPreferenciaDePagamento().then(newPreferenceID => { + + if (configData.advDebug == 'enabled') { + console.log('Nova preferência criada:', newPreferenceID); + } + + preferenceID = newPreferenceID; + + const newButton = document.createElement('div'); + newButton.id = 'wallet_container'; + const fieldset = document.querySelector('.no-fields-lknmp'); + + if (showMP) { + newButton.style.display = 'block'; + } else { + newButton.style.display = 'none'; + } + + fieldset.appendChild(newButton); + + const mp = new MercadoPago(configData.key); + const bricksBuilder = mp.bricks(); + mp.bricks().create("wallet", "wallet_container", { + initialization: { + preferenceId: preferenceID, + redirectMode: "blank" + }, + customization: { + texts: { + valueProp: 'smart_option' + } + } + }); + + }).catch(error => { + console.error('Erro ao criar nova preferência de pagamento:', error); + }); + } + } + }, 500)); // Atraso de 500 milissegundos + + observer.observe(targetNode, { + attributes: true, + childList: true, + subtree: true, + characterData: true + }); +} + +function observeFormChanges() { + const nomeInput = document.querySelector('input[name="firstName"]'); + const emailInput = document.querySelector('input[name="email"]'); + if (nomeInput && emailInput) { + nomeInput.addEventListener('input', checkInputs); + emailInput.addEventListener('input', checkInputs); + } +} +function checkInputs() { + const nomeInput = document.querySelector('input[name="firstName"]'); + const emailInput = document.querySelector('input[name="email"]'); + const walletContainer = document.querySelector('#wallet_container'); + let warningText = document.querySelector('#warning-text'); + + function isValidEmail(email) { + const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + return emailPattern.test(email); + } + + if (nomeInput && emailInput && walletContainer) { + if (!nomeInput.value.trim()) { + walletContainer.style.display = 'none'; + warningText.textContent = lknMercadoPagoGlobals.MenssageErrorNameEmpty; + showMP = false; + } else if (nomeInput.value.trim().length < 3) { + walletContainer.style.display = 'none'; + warningText.textContent = lknMercadoPagoGlobals.MenssageErrorName; + showMP = false; + } else if (!emailInput.value.trim()) { + walletContainer.style.display = 'none'; + warningText.textContent = lknMercadoPagoGlobals.MenssageErrorEmailEmpty; + showMP = false; + + } else if (!isValidEmail(emailInput.value)) { + walletContainer.style.display = 'none'; + warningText.textContent = lknMercadoPagoGlobals.MenssageErrorEmailInvalid; + showMP = false; + } else { + walletContainer.style.display = 'block'; + warningText.textContent = ''; + showMP = true; + } + } +} +const LknmpGatewayGiveWP = { + id: 'lknmp-gateway-givewp', + async initialize() { + // Aqui vai todas as funções necessárias ao carregar a página de pagamento + }, + async beforeCreatePayment(values) { + // Aqui vai tudo que precisa rodar depois de submeter o formulário e antes do pagamento ser completado + // Ponha validações e adicione atributos que você vai precisar no back-end aqui + + // Caso detecte algum erro de validação você pode adicionar uma exceção + // A mensagem de erro aparecerá para o cliente já formatada + + + // Retorna os atributos usados pelo back-end + // Atributos do objeto value já são passados por padrão + + if (values.firstname === 'error') { + throw new Error('Gateway failed'); + } + + return { + gatewayId: idUnique + }; + + }, + async afterCreatePayment(response) { + //Depois da criação do pagamento + }, + // Função onde os campos HTML são criados + Fields() { + + function lknMercadoPagoprintFrontendNotice(title, message) { + return /*#__PURE__*/React.createElement("div", { + className: "error-notice" + }, /*#__PURE__*/React.createElement("strong", null, title), " ", message); + } + + if (lknMercadoPagoGlobals.token == 'false') { + return lknMercadoPagoprintFrontendNotice('Erro:', lknMercadoPagoGlobals.MenssageErrorToken); + } else if (lknMercadoPagoGlobals.publicKey == 'false') { + return lknMercadoPagoprintFrontendNotice('Erro:', lknMercadoPagoGlobals.MenssageErrorPublicKey); + } else { + + if (!hasRenderedComponents) { + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', function () { + renderComponentsOnce(); + }); + } else { + renderComponentsOnce(); + } + } else { + //observeButtonChanges já está cumprindo a função de recarregar o formulário + updateDonationAmount(); + + const oldButton = document.querySelector('#wallet_container'); + if (oldButton) { + oldButton.remove(); + } + } + + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("fieldset", { + className: "no-fields-lknmp" + }, /*#__PURE__*/React.createElement("h1", null, lknMercadoPagoGlobals.MenssageDonation, /*#__PURE__*/React.createElement("span", { + id: "donation-amount" + })), /*#__PURE__*/React.createElement("h3", { + id: "warning-text" + }), /*#__PURE__*/React.createElement("div", { + id: "wallet_container" + }))); + } + } +}; window.givewp.gateways.register(LknmpGatewayGiveWP); \ No newline at end of file diff --git a/Public/js/plugin-script.tsx b/Public/js/plugin-script.tsx index ca937f1..9e66ba9 100755 --- a/Public/js/plugin-script.tsx +++ b/Public/js/plugin-script.tsx @@ -1,206 +1,206 @@ -async function criarPreferenciaDePagamento() { - const url = 'https://api.mercadopago.com/checkout/preferences'; - const token = 'TEST-4103642140602972-050610-67d0c5a5cccd4907b1208fded2115f5c-1052089223'; - - // Obter valores dos campos HTML - const nome = document.querySelector('input[name="firstName"]').value; - const sobrenome = document.querySelector('input[name="lastName"]').value; - const email = document.querySelector('input[name="email"]').value; - //const dd = document.querySelector('input[name="dd"]').value; - const dd = "84"; - //const numero = document.querySelector('input[name="numero"]').value; - const numero = 998224031 - //const cpf = document.querySelector('input[name="cpf"]').value; - const cpf = "000.432.234-54"; - //const cep = document.querySelector('input[name="cep"]').value; - const cep = "59330-000" - //const rua = document.querySelector('input[name="rua"]').value; - const rua = "Benjamin Constant" - const numerocasa = "07" - - const valorText = document.querySelector('.givewp-elements-donationSummary__list__item__value').textContent; - const valorNumerico = parseFloat(valorText.replace(/[^\d.,]/g, '')); - - const valor = parseFloat(document.querySelector('.givewp-elements-donationSummary__list__item__value').textContent); - const preference = { - "back_urls": { - "success": "http://test.com/success", - "pending": "http://test.com/pending", - "failure": "http://test.com/failure" - }, - "items": [{ - "id": "Doação X", - "title": "Doação via Mercado Pago", - "description": "Sua doação foi de ", - "quantity": 1, - "currency_id": "BRL", - "unit_price": valorNumerico - }] - }; - try { - const response = await fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${token}` - }, - body: JSON.stringify(preference) - }); - if (!response.ok) { - throw new Error(`Erro ao criar preferência de pagamento: ${response.status}`); - } - const data = await response.json(); - return data; - } catch (error) { - console.error('Erro ao criar preferência de pagamento:', error); - throw error; - } -} -async function getPreferenceID() { - try { - const preferenceData = await criarPreferenciaDePagamento(); - if (preferenceData && preferenceData.id) { - console.log('ID da preferência de pagamento:', preferenceData.id); - return preferenceData.id; - } else { - throw new Error('Erro ao obter o ID da preferência de pagamento'); - } - } catch (error) { - console.error('Erro ao obter o ID da preferência de pagamento:', error); - throw error; - } -} - -function updateDonationAmount() { - const fieldValueElement = document.querySelector('.givewp-elements-donationSummary__list__item__value'); - const donationAmountElement = document.querySelector('#donation-amount'); - - if (fieldValueElement && donationAmountElement) { - const fieldValue = fieldValueElement.textContent; - donationAmountElement.textContent = fieldValue; - } -} - -function observeDonationChanges() { - const targetNode = document.querySelector('.givewp-elements-donationSummary__list__item__value'); - - if (!targetNode) return; // Sair se o elemento não for encontrado - - const observer = new MutationObserver(function (mutationsList, observer) { - for (const mutation of mutationsList) { - if (mutation.type === 'childList' || mutation.type === 'characterData') { - // Chamando a função para atualizar o valor do campo de doação - updateDonationAmount(); - } - } - }); - - observer.observe(targetNode, { attributes: true, childList: true, subtree: true, characterData: true }); -} - -function observeFormChanges() { - const nomeInput = document.querySelector('input[name="firstName"]'); - const emailInput = document.querySelector('input[name="email"]'); - - // Verifica se os campos foram encontrados antes de adicionar ouvintes de eventos - if (nomeInput && emailInput) { - // Adiciona ouvintes de eventos de entrada aos campos de nome e e-mail - nomeInput.addEventListener('input', checkInputs); - emailInput.addEventListener('input', checkInputs); - } -} -function checkInputs() { - const nomeInput = document.querySelector('input[name="firstName"]'); - const emailInput = document.querySelector('input[name="email"]'); - const walletContainer = document.querySelector('#wallet_container'); - let warningText = document.querySelector('#warning-text'); - if (nomeInput && emailInput && walletContainer) { - if (nomeInput.value && emailInput.value) { - // Se ambos os campos de nome e e-mail estiverem preenchidos, habilitar o container - walletContainer.style.display = 'block'; - // Esconder a mensagem de aviso - warningText.textContent = ''; // Limpa o texto da mensagem de aviso - } else { - // Se algum campo estiver vazio, desabilitar o container e exibir a mensagem de aviso - walletContainer.style.display = 'none'; - // Define o texto da mensagem de aviso - warningText.textContent = 'Email ou Email não foram preenchidos. Por favor, preencha todos os campos antes de prosseguir.'; - } - } -} - -const gateway = { - id: 'lknmp-gateway-givewp', - async initialize() { - // Aqui vai todas as funções necessárias ao carregar a página de pagamento - }, - async beforeCreatePayment(values) { - // Aqui vai tudo que precisa rodar depois de submeter o formulário e antes do pagamento ser completado - // Ponha validações e adicione atributos que você vai precisar no back-end aqui - - // Caso detecte algum erro de validação você pode adicionar uma exceção - // A mensagem de erro aparecerá para o cliente já formatada - if (values.firstname === 'error') { - throw new Error('Gateway failed'); - } - - // Retorna os atributos usados pelo back-end - // Atributos do objeto value já são passados por padrão - return { - pluginIntent: 'lkn-plugin-intent', - custom: 'anything' - }; - }, - async afterCreatePayment(response) { - // Aqui roda tudo que você precisa após o formulário ser submetido - // Antes de ir para a tela do comprovante de pagamento - }, - // Função onde os campos HTML são criados - Fields() { - - // Chamando a função updateFieldValue() após os elementos terem sido renderizados - - setTimeout(updateDonationAmount, 0); - setTimeout(checkInputs, 0); - observeDonationChanges(); - observeFormChanges(); - - criarPreferenciaDePagamento(); - - - getPreferenceID() - .then(preferenceID => { - const id = preferenceID; - const mp = new MercadoPago('TEST-c4abbb26-f793-4baf-a4a4-7e132e2350cb'); - const bricksBuilder = mp.bricks(); - mp.bricks().create("wallet", "wallet_container", { - initialization: { - preferenceId: id - }, - customization: { - texts: { - valueProp: 'smart_option' - } - } - }); - - }) - .catch(error => { - // Lida com erros, se ocorrerem - }); - - return ( - <> -
-

- Doação de -

-

-
-
- - ); - } -}; - -window.givewp.gateways.register(gateway); +async function criarPreferenciaDePagamento() { + const url = 'https://api.mercadopago.com/checkout/preferences'; + const token = 'TEST-4103642140602972-050610-67d0c5a5cccd4907b1208fded2115f5c-1052089223'; + + // Obter valores dos campos HTML + const nome = document.querySelector('input[name="firstName"]').value; + const sobrenome = document.querySelector('input[name="lastName"]').value; + const email = document.querySelector('input[name="email"]').value; + //const dd = document.querySelector('input[name="dd"]').value; + const dd = "84"; + //const numero = document.querySelector('input[name="numero"]').value; + const numero = 998224031 + //const cpf = document.querySelector('input[name="cpf"]').value; + const cpf = "000.432.234-54"; + //const cep = document.querySelector('input[name="cep"]').value; + const cep = "59330-000" + //const rua = document.querySelector('input[name="rua"]').value; + const rua = "Benjamin Constant" + const numerocasa = "07" + + const valorText = document.querySelector('.givewp-elements-donationSummary__list__item__value').textContent; + const valorNumerico = parseFloat(valorText.replace(/[^\d.,]/g, '')); + + const valor = parseFloat(document.querySelector('.givewp-elements-donationSummary__list__item__value').textContent); + const preference = { + "back_urls": { + "success": "http://test.com/success", + "pending": "http://test.com/pending", + "failure": "http://test.com/failure" + }, + "items": [{ + "id": "Doação X", + "title": "Doação via Mercado Pago", + "description": "Sua doação foi de ", + "quantity": 1, + "currency_id": "BRL", + "unit_price": valorNumerico + }] + }; + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${token}` + }, + body: JSON.stringify(preference) + }); + if (!response.ok) { + throw new Error(`Erro ao criar preferência de pagamento: ${response.status}`); + } + const data = await response.json(); + return data; + } catch (error) { + console.error('Erro ao criar preferência de pagamento:', error); + throw error; + } +} +async function getPreferenceID() { + try { + const preferenceData = await criarPreferenciaDePagamento(); + if (preferenceData && preferenceData.id) { + console.log('ID da preferência de pagamento:', preferenceData.id); + return preferenceData.id; + } else { + throw new Error('Erro ao obter o ID da preferência de pagamento'); + } + } catch (error) { + console.error('Erro ao obter o ID da preferência de pagamento:', error); + throw error; + } +} + +function updateDonationAmount() { + const fieldValueElement = document.querySelector('.givewp-elements-donationSummary__list__item__value'); + const donationAmountElement = document.querySelector('#donation-amount'); + + if (fieldValueElement && donationAmountElement) { + const fieldValue = fieldValueElement.textContent; + donationAmountElement.textContent = fieldValue; + } +} + +function observeDonationChanges() { + const targetNode = document.querySelector('.givewp-elements-donationSummary__list__item__value'); + + if (!targetNode) return; // Sair se o elemento não for encontrado + + const observer = new MutationObserver(function (mutationsList, observer) { + for (const mutation of mutationsList) { + if (mutation.type === 'childList' || mutation.type === 'characterData') { + // Chamando a função para atualizar o valor do campo de doação + updateDonationAmount(); + } + } + }); + + observer.observe(targetNode, { attributes: true, childList: true, subtree: true, characterData: true }); +} + +function observeFormChanges() { + const nomeInput = document.querySelector('input[name="firstName"]'); + const emailInput = document.querySelector('input[name="email"]'); + + // Verifica se os campos foram encontrados antes de adicionar ouvintes de eventos + if (nomeInput && emailInput) { + // Adiciona ouvintes de eventos de entrada aos campos de nome e e-mail + nomeInput.addEventListener('input', checkInputs); + emailInput.addEventListener('input', checkInputs); + } +} +function checkInputs() { + const nomeInput = document.querySelector('input[name="firstName"]'); + const emailInput = document.querySelector('input[name="email"]'); + const walletContainer = document.querySelector('#wallet_container'); + let warningText = document.querySelector('#warning-text'); + if (nomeInput && emailInput && walletContainer) { + if (nomeInput.value && emailInput.value) { + // Se ambos os campos de nome e e-mail estiverem preenchidos, habilitar o container + walletContainer.style.display = 'block'; + // Esconder a mensagem de aviso + warningText.textContent = ''; // Limpa o texto da mensagem de aviso + } else { + // Se algum campo estiver vazio, desabilitar o container e exibir a mensagem de aviso + walletContainer.style.display = 'none'; + // Define o texto da mensagem de aviso + warningText.textContent = 'Email ou Email não foram preenchidos. Por favor, preencha todos os campos antes de prosseguir.'; + } + } +} + +const gateway = { + id: 'lknmp-gateway-givewp', + async initialize() { + // Aqui vai todas as funções necessárias ao carregar a página de pagamento + }, + async beforeCreatePayment(values) { + // Aqui vai tudo que precisa rodar depois de submeter o formulário e antes do pagamento ser completado + // Ponha validações e adicione atributos que você vai precisar no back-end aqui + + // Caso detecte algum erro de validação você pode adicionar uma exceção + // A mensagem de erro aparecerá para o cliente já formatada + if (values.firstname === 'error') { + throw new Error('Gateway failed'); + } + + // Retorna os atributos usados pelo back-end + // Atributos do objeto value já são passados por padrão + return { + pluginIntent: 'lkn-plugin-intent', + custom: 'anything' + }; + }, + async afterCreatePayment(response) { + // Aqui roda tudo que você precisa após o formulário ser submetido + // Antes de ir para a tela do comprovante de pagamento + }, + // Função onde os campos HTML são criados + Fields() { + + // Chamando a função updateFieldValue() após os elementos terem sido renderizados + + setTimeout(updateDonationAmount, 0); + setTimeout(checkInputs, 0); + observeDonationChanges(); + observeFormChanges(); + + criarPreferenciaDePagamento(); + + + getPreferenceID() + .then(preferenceID => { + const id = preferenceID; + const mp = new MercadoPago('TEST-c4abbb26-f793-4baf-a4a4-7e132e2350cb'); + const bricksBuilder = mp.bricks(); + mp.bricks().create("wallet", "wallet_container", { + initialization: { + preferenceId: id + }, + customization: { + texts: { + valueProp: 'smart_option' + } + } + }); + + }) + .catch(error => { + // Lida com erros, se ocorrerem + }); + + return ( + <> +
+

+ Doação de +

+

+
+
+ + ); + } +}; + +window.givewp.gateways.register(gateway); diff --git a/Public/partials/lkn-mercadopago-for-givewp-public-display.php b/Public/partials/lkn-mercadopago-for-givewp-public-display.php index 9166600..f8f2c85 100755 --- a/Public/partials/lkn-mercadopago-for-givewp-public-display.php +++ b/Public/partials/lkn-mercadopago-for-givewp-public-display.php @@ -1,16 +1,16 @@ - - - + + + diff --git a/README.txt b/README.txt index 8dee2fd..5453f33 100755 --- a/README.txt +++ b/README.txt @@ -1,109 +1,109 @@ -=== Link Nacional Payment Gateway for MercadoPago and GiveWP === -Contributors: linknacional -Donate link: https://www.linknacional.com.br/wordpress/givewp/ -Tags: givewp, payment, mercadopago, card -Requires at least: 5.7 -Tested up to: 6.6 -Stable tag: 1.2.2 -Requires PHP: 7.4 -License: GPLv3 or later -License URI: http://www.gnu.org/licenses/gpl-3.0.html - -Link Nacional MercadoPago payment option for GiveWP. - -== Description == - -The [MercadoPago Payment Gateway for GiveWP](https://www.linknacional.com.br/wordpress/givewp/) seamlessly integrates MercadoPago with the GiveWP donation plugin for WordPress, providing a secure and efficient solution for receiving online donations. This plugin supports multiple payment methods, recurring donations, and customizable donation forms. Enhance your donor's experience with a trusted payment gateway, boost your fundraising efforts, and manage donations effortlessly with detailed reporting and a user-friendly interface. - -[MercadoPago](https://www.mercadopago.com.br) is a leading online payment solution in Latin America, offering a comprehensive suite of services for secure and convenient financial transactions. As the fintech arm of Mercado Libre, one of the region’s largest e-commerce platforms, Mercado Pago provides a reliable and user-friendly payment gateway for businesses and individuals alike. - -**Dependencies** - -[GiveWP](https://wordpress.org/plugins/give/) is needed for the plugin to work. - -JS Libraries used: -The [MercadoPago sdk-js](https://github.com/mercadopago/sdk-js) is needed for the plugin to work. [Learn more](https://www.mercadopago.com.br/developers/pt/docs/checkout-pro/integrate-checkout-pro/web). - -As a Payment Gateway this plugin contacts these external resources to complete the payment: -[Mercado Pago Checkout API](https://api.mercadopago.com/checkout/preferences) -[Mercado Pago Checkout JS SDK](https://sdk.mercadopago.com/js/v2) - -**User instructions** - -1. Search the WordPress sidebar for 'Link Nacional MercadoPago for GiveWP'. - -2. Download and activate the plugin. - -3. In the GiveWP, navigate to settings, then 'Payments Gateways', and activate 'Mercado Pago'. - -4. Save your settings. - -You have successfully configured the MercadoPago National Link for GiveWP and allowed your customers to choose to pay for donations with Mercado Pago. - -== Installation == - -1. Access GiveWP settings from the WordPress admin dashboard. - -2. Under "Payment Gateways", locate "Mercado Pago" and configure settings. - -3. Enter the necessary configuration information, such as Mercado Pago TOKEN and PUBLIC KEY. Additionally, also customize the title and description that will appear at checkout. - -4. Save your settings. - -The Link Nacional MercadoPago for GiveWP plugin is now live and working. - -= Payments Settings = - -1. After installing the plugin, access the WordPress admin dashboard and navigate to the GiveWP settings. -2. In the sidebar menu, click on "Donations" and then on "Settings". -3. In the "Payments Gateways" tab, you'll see a list of available payment methods. -4. Locate “Mercado Pago” in the list of payment methods and go to settings. -5. Enter the necessary configuration information, such as Mercado Pago TOKEN and PUBLIC KEY. Additionally, also customize the title and description that will appear at checkout. - -== Frequently Asked Questions == - -= What is the license of the plugin? = - -* This plugin is released under a GPLv3 license. - -= What do I need to use this plugin? = - -* Have installed the GiveWP plugin. - -= Is it necessary to edit the settings? Which are they? = - -* Yes, it is necessary to configure the token and public key according to your Mercado Pago account. - -== Screenshots == - -1. Nothing yet. - -== Changelog == - -= 1.2.2 = *2024/09/25* -* Update documentation; -* Fix translation mismatch issues; -* Change option names to avoid collisions. - -= 1.2.1 = *2024/09/10* -* Refactor with requested name and slug changes. - -= 1.2.0 = *2024/08/15* -* Plugin rendering fixed -* Payment method change correction -* WordPress guidelines applied -* Notice of plugin inapplicability in the classic and multistep form - -= 1.0.1 = *2024/08/05* -* Message added when inserting the Mercado Pago token; -* Plugin namespace updated; -* Refactor with new WordPress guidelines; -* Update README. - -= 1.0.0 = *2024/05/31* -* Plugin launch. - -== Upgrade Notice == - -= 1.0.0 = +=== Link Nacional Payment Gateway for MercadoPago and GiveWP === +Contributors: linknacional +Donate link: https://www.linknacional.com.br/wordpress/givewp/ +Tags: givewp, payment, mercadopago, card +Requires at least: 5.7 +Tested up to: 6.6 +Stable tag: 1.2.2 +Requires PHP: 7.4 +License: GPLv3 or later +License URI: http://www.gnu.org/licenses/gpl-3.0.html + +Link Nacional MercadoPago payment option for GiveWP. + +== Description == + +The [MercadoPago Payment Gateway for GiveWP](https://www.linknacional.com.br/wordpress/givewp/) seamlessly integrates MercadoPago with the GiveWP donation plugin for WordPress, providing a secure and efficient solution for receiving online donations. This plugin supports multiple payment methods, recurring donations, and customizable donation forms. Enhance your donor's experience with a trusted payment gateway, boost your fundraising efforts, and manage donations effortlessly with detailed reporting and a user-friendly interface. + +[MercadoPago](https://www.mercadopago.com.br) is a leading online payment solution in Latin America, offering a comprehensive suite of services for secure and convenient financial transactions. As the fintech arm of Mercado Libre, one of the region’s largest e-commerce platforms, Mercado Pago provides a reliable and user-friendly payment gateway for businesses and individuals alike. + +**Dependencies** + +[GiveWP](https://wordpress.org/plugins/give/) is needed for the plugin to work. + +JS Libraries used: +The [MercadoPago sdk-js](https://github.com/mercadopago/sdk-js) is needed for the plugin to work. [Learn more](https://www.mercadopago.com.br/developers/pt/docs/checkout-pro/integrate-checkout-pro/web). + +As a Payment Gateway this plugin contacts these external resources to complete the payment: +[Mercado Pago Checkout API](https://api.mercadopago.com/checkout/preferences) +[Mercado Pago Checkout JS SDK](https://sdk.mercadopago.com/js/v2) + +**User instructions** + +1. Search the WordPress sidebar for 'Link Nacional MercadoPago for GiveWP'. + +2. Download and activate the plugin. + +3. In the GiveWP, navigate to settings, then 'Payments Gateways', and activate 'Mercado Pago'. + +4. Save your settings. + +You have successfully configured the MercadoPago National Link for GiveWP and allowed your customers to choose to pay for donations with Mercado Pago. + +== Installation == + +1. Access GiveWP settings from the WordPress admin dashboard. + +2. Under "Payment Gateways", locate "Mercado Pago" and configure settings. + +3. Enter the necessary configuration information, such as Mercado Pago TOKEN and PUBLIC KEY. Additionally, also customize the title and description that will appear at checkout. + +4. Save your settings. + +The Link Nacional MercadoPago for GiveWP plugin is now live and working. + += Payments Settings = + +1. After installing the plugin, access the WordPress admin dashboard and navigate to the GiveWP settings. +2. In the sidebar menu, click on "Donations" and then on "Settings". +3. In the "Payments Gateways" tab, you'll see a list of available payment methods. +4. Locate “Mercado Pago” in the list of payment methods and go to settings. +5. Enter the necessary configuration information, such as Mercado Pago TOKEN and PUBLIC KEY. Additionally, also customize the title and description that will appear at checkout. + +== Frequently Asked Questions == + += What is the license of the plugin? = + +* This plugin is released under a GPLv3 license. + += What do I need to use this plugin? = + +* Have installed the GiveWP plugin. + += Is it necessary to edit the settings? Which are they? = + +* Yes, it is necessary to configure the token and public key according to your Mercado Pago account. + +== Screenshots == + +1. Nothing yet. + +== Changelog == + += 1.2.2 = *2024/09/25* +* Update documentation; +* Fix translation mismatch issues; +* Change option names to avoid collisions. + += 1.2.1 = *2024/09/10* +* Refactor with requested name and slug changes. + += 1.2.0 = *2024/08/15* +* Plugin rendering fixed +* Payment method change correction +* WordPress guidelines applied +* Notice of plugin inapplicability in the classic and multistep form + += 1.0.1 = *2024/08/05* +* Message added when inserting the Mercado Pago token; +* Plugin namespace updated; +* Refactor with new WordPress guidelines; +* Update README. + += 1.0.0 = *2024/05/31* +* Plugin launch. + +== Upgrade Notice == + += 1.0.0 = * Plugin launch. \ No newline at end of file diff --git a/composer.json b/composer.json index cac75bd..63c981e 100755 --- a/composer.json +++ b/composer.json @@ -1,23 +1,23 @@ -{ - "name": "lknmp/mercadopago-for-givewp", - "type": "project", - "license": "Proprietary", - "autoload": { - "psr-4": { - "Lknmp\\Gateway\\Includes\\": "Includes/", - "Lknmp\\Gateway\\Admin\\": "Admin/", - "Lknmp\\Gateway\\PublicView\\": "Public/" - } - }, - "authors": [ - { - "name": "Link Nacional", - "email": "ticket@linknacional.com" - } - ], - "minimum-stability": "stable", - "require-dev": { - "phan/phan": "5.4.1" - }, - "require": {} +{ + "name": "lknmp/mercadopago-for-givewp", + "type": "project", + "license": "Proprietary", + "autoload": { + "psr-4": { + "Lknmp\\Gateway\\Includes\\": "Includes/", + "Lknmp\\Gateway\\Admin\\": "Admin/", + "Lknmp\\Gateway\\PublicView\\": "Public/" + } + }, + "authors": [ + { + "name": "Link Nacional", + "email": "ticket@linknacional.com" + } + ], + "minimum-stability": "stable", + "require-dev": { + "phan/phan": "5.4.1" + }, + "require": {} } \ No newline at end of file diff --git a/composer.lock b/composer.lock index ad0fdcd..523aeff 100755 --- a/composer.lock +++ b/composer.lock @@ -1,1751 +1,1751 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "504934958a502cf6a8b29d3bb50d2d7b", - "packages": [], - "packages-dev": [ - { - "name": "composer/pcre", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90", - "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<1.11.8" - }, - "require-dev": { - "phpstan/phpstan": "^1.11.8", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8 || ^9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.2.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2024-07-25T09:36:02+00:00" - }, - { - "name": "composer/semver", - "version": "3.4.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2024-07-12T11:35:52+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.5", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2024-05-06T16:37:16+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" - }, - "time": "2024-01-30T19:34:25+00:00" - }, - { - "name": "felixfbecker/advanced-json-rpc", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "shasum": "" - }, - "require": { - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "php": "^7.1 || ^8.0", - "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "AdvancedJsonRpc\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "A more advanced JSONRPC implementation", - "support": { - "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", - "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" - }, - "time": "2021-06-11T22:34:44+00:00" - }, - { - "name": "microsoft/tolerant-php-parser", - "version": "v0.1.1", - "source": { - "type": "git", - "url": "https://github.com/microsoft/tolerant-php-parser.git", - "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16", - "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.15" - }, - "type": "library", - "autoload": { - "psr-4": { - "Microsoft\\PhpParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rob Lourens", - "email": "roblou@microsoft.com" - } - ], - "description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios", - "support": { - "issues": "https://github.com/microsoft/tolerant-php-parser/issues", - "source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1" - }, - "time": "2021-07-16T21:28:12+00:00" - }, - { - "name": "netresearch/jsonmapper", - "version": "v4.4.1", - "source": { - "type": "git", - "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", - "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", - "squizlabs/php_codesniffer": "~3.5" - }, - "type": "library", - "autoload": { - "psr-0": { - "JsonMapper": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "cweiske@cweiske.de", - "homepage": "http://github.com/cweiske/jsonmapper/", - "role": "Developer" - } - ], - "description": "Map nested JSON structures onto PHP classes", - "support": { - "email": "cweiske@cweiske.de", - "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" - }, - "time": "2024-01-31T06:18:54+00:00" - }, - { - "name": "phan/phan", - "version": "5.4.1", - "source": { - "type": "git", - "url": "https://github.com/phan/phan.git", - "reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phan/phan/zipball/fef40178a952bcfcc3f69b76989dd613c3d5c759", - "reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759", - "shasum": "" - }, - "require": { - "composer/semver": "^1.4|^2.0|^3.0", - "composer/xdebug-handler": "^2.0|^3.0", - "ext-filter": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.4", - "microsoft/tolerant-php-parser": "0.1.1", - "netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0", - "php": "^7.2.0|^8.0.0", - "sabre/event": "^5.1.3", - "symfony/console": "^3.2|^4.0|^5.0|^6.0", - "symfony/polyfill-mbstring": "^1.11.0", - "symfony/polyfill-php80": "^1.20.0", - "tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.0" - }, - "suggest": { - "ext-ast": "Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.16+ is recommended.", - "ext-iconv": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8", - "ext-igbinary": "Improves performance of polyfill when ext-ast is unavailable", - "ext-mbstring": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8", - "ext-tokenizer": "Needed for fallback/polyfill parser support and file/line-based suppressions.", - "ext-var_representation": "Suggested for converting values to strings in issue messages" - }, - "bin": [ - "phan", - "phan_client", - "tocheckstyle" - ], - "type": "project", - "autoload": { - "psr-4": { - "Phan\\": "src/Phan" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tyson Andre" - }, - { - "name": "Rasmus Lerdorf" - }, - { - "name": "Andrew S. Morrison" - } - ], - "description": "A static analyzer for PHP", - "keywords": [ - "analyzer", - "php", - "static" - ], - "support": { - "issues": "https://github.com/phan/phan/issues", - "source": "https://github.com/phan/phan/tree/5.4.1" - }, - "time": "2022-08-26T00:49:07+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.4.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.1", - "ext-filter": "*", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.5", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-webmozart-assert": "^1.2", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" - }, - "time": "2024-05-21T05:55:05+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.8.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" - }, - "time": "2024-02-23T11:10:43+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.29.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" - }, - "time": "2024-05-31T08:52:43+00:00" - }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, - { - "name": "sabre/event", - "version": "5.1.6", - "source": { - "type": "git", - "url": "https://github.com/sabre-io/event.git", - "reference": "e0e1ccbff1965083de9a6530182b8b70819e1347" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabre-io/event/zipball/e0e1ccbff1965083de9a6530182b8b70819e1347", - "reference": "e0e1ccbff1965083de9a6530182b8b70819e1347", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.17.1", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6" - }, - "type": "library", - "autoload": { - "files": [ - "lib/coroutine.php", - "lib/Loop/functions.php", - "lib/Promise/functions.php" - ], - "psr-4": { - "Sabre\\Event\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "http://evertpot.com/", - "role": "Developer" - } - ], - "description": "sabre/event is a library for lightweight event-based programming", - "homepage": "http://sabre.io/event/", - "keywords": [ - "EventEmitter", - "async", - "coroutine", - "eventloop", - "events", - "hooks", - "plugin", - "promise", - "reactor", - "signal" - ], - "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/event/issues", - "source": "https://github.com/fruux/sabre-event" - }, - "time": "2024-07-26T05:09:47+00:00" - }, - { - "name": "symfony/console", - "version": "v6.4.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", - "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.4.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-07-26T12:30:32+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-04-18T09:32:20+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.30.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-05-31T15:07:36+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-05-31T15:07:36+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-05-31T15:07:36+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-06-19T12:30:46+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.30.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-05-31T15:07:36+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-04-18T09:32:20+00:00" - }, - { - "name": "symfony/string", - "version": "v6.4.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "ccf9b30251719567bfd46494138327522b9a9446" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", - "reference": "ccf9b30251719567bfd46494138327522b9a9446", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.4.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-07-22T10:21:14+00:00" - }, - { - "name": "tysonandre/var_representation_polyfill", - "version": "0.1.3", - "source": { - "type": "git", - "url": "https://github.com/TysonAndre/var_representation_polyfill.git", - "reference": "e9116c2c352bb0835ca428b442dde7767c11ad32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/e9116c2c352bb0835ca428b442dde7767c11ad32", - "reference": "e9116c2c352bb0835ca428b442dde7767c11ad32", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.2.0|^8.0.0" - }, - "provide": { - "ext-var_representation": "*" - }, - "require-dev": { - "phan/phan": "^5.4.1", - "phpunit/phpunit": "^8.5.0" - }, - "suggest": { - "ext-var_representation": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.1.3-dev" - } - }, - "autoload": { - "files": [ - "src/var_representation.php" - ], - "psr-4": { - "VarRepresentation\\": "src/VarRepresentation" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tyson Andre" - } - ], - "description": "Polyfill for var_representation: convert a variable to a string in a way that fixes the shortcomings of var_export", - "keywords": [ - "var_export", - "var_representation" - ], - "support": { - "issues": "https://github.com/TysonAndre/var_representation_polyfill/issues", - "source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.3" - }, - "time": "2022-08-31T12:59:22+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.6.0" -} +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "504934958a502cf6a8b29d3bb50d2d7b", + "packages": [], + "packages-dev": [ + { + "name": "composer/pcre", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90", + "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.8" + }, + "require-dev": { + "phpstan/phpstan": "^1.11.8", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8 || ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.2.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-07-25T09:36:02+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-07-12T11:35:52+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-06T16:37:16+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + }, + "time": "2024-01-30T19:34:25+00:00" + }, + { + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "AdvancedJsonRpc\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "A more advanced JSONRPC implementation", + "support": { + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" + }, + "time": "2021-06-11T22:34:44+00:00" + }, + { + "name": "microsoft/tolerant-php-parser", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/microsoft/tolerant-php-parser.git", + "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16", + "reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.15" + }, + "type": "library", + "autoload": { + "psr-4": { + "Microsoft\\PhpParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Lourens", + "email": "roblou@microsoft.com" + } + ], + "description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios", + "support": { + "issues": "https://github.com/microsoft/tolerant-php-parser/issues", + "source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1" + }, + "time": "2021-07-16T21:28:12+00:00" + }, + { + "name": "netresearch/jsonmapper", + "version": "v4.4.1", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", + "squizlabs/php_codesniffer": "~3.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" + }, + "time": "2024-01-31T06:18:54+00:00" + }, + { + "name": "phan/phan", + "version": "5.4.1", + "source": { + "type": "git", + "url": "https://github.com/phan/phan.git", + "reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phan/phan/zipball/fef40178a952bcfcc3f69b76989dd613c3d5c759", + "reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4|^2.0|^3.0", + "composer/xdebug-handler": "^2.0|^3.0", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "felixfbecker/advanced-json-rpc": "^3.0.4", + "microsoft/tolerant-php-parser": "0.1.1", + "netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0", + "php": "^7.2.0|^8.0.0", + "sabre/event": "^5.1.3", + "symfony/console": "^3.2|^4.0|^5.0|^6.0", + "symfony/polyfill-mbstring": "^1.11.0", + "symfony/polyfill-php80": "^1.20.0", + "tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.0" + }, + "suggest": { + "ext-ast": "Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.16+ is recommended.", + "ext-iconv": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8", + "ext-igbinary": "Improves performance of polyfill when ext-ast is unavailable", + "ext-mbstring": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8", + "ext-tokenizer": "Needed for fallback/polyfill parser support and file/line-based suppressions.", + "ext-var_representation": "Suggested for converting values to strings in issue messages" + }, + "bin": [ + "phan", + "phan_client", + "tocheckstyle" + ], + "type": "project", + "autoload": { + "psr-4": { + "Phan\\": "src/Phan" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tyson Andre" + }, + { + "name": "Rasmus Lerdorf" + }, + { + "name": "Andrew S. Morrison" + } + ], + "description": "A static analyzer for PHP", + "keywords": [ + "analyzer", + "php", + "static" + ], + "support": { + "issues": "https://github.com/phan/phan/issues", + "source": "https://github.com/phan/phan/tree/5.4.1" + }, + "time": "2022-08-26T00:49:07+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.4.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" + }, + "time": "2024-05-21T05:55:05+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "153ae662783729388a584b4361f2545e4d841e3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.29.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" + }, + "time": "2024-05-31T08:52:43+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "sabre/event", + "version": "5.1.6", + "source": { + "type": "git", + "url": "https://github.com/sabre-io/event.git", + "reference": "e0e1ccbff1965083de9a6530182b8b70819e1347" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabre-io/event/zipball/e0e1ccbff1965083de9a6530182b8b70819e1347", + "reference": "e0e1ccbff1965083de9a6530182b8b70819e1347", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.17.1", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6" + }, + "type": "library", + "autoload": { + "files": [ + "lib/coroutine.php", + "lib/Loop/functions.php", + "lib/Promise/functions.php" + ], + "psr-4": { + "Sabre\\Event\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Evert Pot", + "email": "me@evertpot.com", + "homepage": "http://evertpot.com/", + "role": "Developer" + } + ], + "description": "sabre/event is a library for lightweight event-based programming", + "homepage": "http://sabre.io/event/", + "keywords": [ + "EventEmitter", + "async", + "coroutine", + "eventloop", + "events", + "hooks", + "plugin", + "promise", + "reactor", + "signal" + ], + "support": { + "forum": "https://groups.google.com/group/sabredav-discuss", + "issues": "https://github.com/sabre-io/event/issues", + "source": "https://github.com/fruux/sabre-event" + }, + "time": "2024-07-26T05:09:47+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-07-26T12:30:32+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-19T12:30:46+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T15:07:36+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/string", + "version": "v6.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "ccf9b30251719567bfd46494138327522b9a9446" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", + "reference": "ccf9b30251719567bfd46494138327522b9a9446", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-07-22T10:21:14+00:00" + }, + { + "name": "tysonandre/var_representation_polyfill", + "version": "0.1.3", + "source": { + "type": "git", + "url": "https://github.com/TysonAndre/var_representation_polyfill.git", + "reference": "e9116c2c352bb0835ca428b442dde7767c11ad32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/e9116c2c352bb0835ca428b442dde7767c11ad32", + "reference": "e9116c2c352bb0835ca428b442dde7767c11ad32", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.2.0|^8.0.0" + }, + "provide": { + "ext-var_representation": "*" + }, + "require-dev": { + "phan/phan": "^5.4.1", + "phpunit/phpunit": "^8.5.0" + }, + "suggest": { + "ext-var_representation": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.3-dev" + } + }, + "autoload": { + "files": [ + "src/var_representation.php" + ], + "psr-4": { + "VarRepresentation\\": "src/VarRepresentation" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tyson Andre" + } + ], + "description": "Polyfill for var_representation: convert a variable to a string in a way that fixes the shortcomings of var_export", + "keywords": [ + "var_export", + "var_representation" + ], + "support": { + "issues": "https://github.com/TysonAndre/var_representation_polyfill/issues", + "source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.3" + }, + "time": "2022-08-31T12:59:22+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/languages/lknmp-mercadopago-for-givewp-pt_BR.po b/languages/lknmp-mercadopago-for-givewp-pt_BR.po index 4fdfeab..27f090b 100755 --- a/languages/lknmp-mercadopago-for-givewp-pt_BR.po +++ b/languages/lknmp-mercadopago-for-givewp-pt_BR.po @@ -1,75 +1,75 @@ -# Link Nacional MercadoPago for GiveWP -msgid "Mercado Pago" -msgstr "Mercado Pago" - -msgid "Mercado Pago Token (Access Token)" -msgstr "Token do Mercado Pago (Acess Token)" - -msgid "Mercado Pago Token Code." -msgstr "Código Token do Mercado Pago." - -msgid "Mercado Pago Public Key (Public Key)" -msgstr "Chave Pública do Mercado Pago (Public Key)" - -msgid "Mercado Pago Public Key." -msgstr "Chave Pública do Mercado Pago." - -msgid "Title in Mercado Pago" -msgstr "Título no Mercado Pago" - -msgid "This title will be used during checkout in Mercado Pago." -msgstr "Esse título será utilizado durante o checkout no Mercado Pago." - -msgid "Description in Mercado Pago" -msgstr "Descrição no Mercado Pago" - -msgid "This description will be used during checkout in Mercado Pago." -msgstr "Essa descrição será utilizada durante o checkout no Mercado Pago." - -msgid "Development Environment" -msgstr "Ambiente de desenvolvimento" - -msgid "Enable the desired development environment: Sandbox or Production." -msgstr "Habilite o ambiente de desenvolvimento desejado: Sandbox ou Produção." - -msgid "Production" -msgstr "Produção" - -msgid "Sandbox" -msgstr "Sandbox" - -msgid "Debug" -msgstr "Depuração" - -msgid "Enable" -msgstr "Habilitar" - -msgid "Disable" -msgstr "Desabilitar" - -msgid "Advanced Debug Mode" -msgstr "Modo de Depuração avançada" - -msgid "Enable advanced Debug environment (CONSOLE - JAVASCRIPT). Be careful enabling this option will leave your site vulnerable." -msgstr "Habilitar ambiente para Debug avançado (CONSOLE - JAVASCRIPT). Atenção habilitar essa opção deixará seu site vulnerável." - -msgid "Enable Debug environment." -msgstr "Habilitar ambiente para Debug." - -msgid "The Name field is empty. Please fill in this field before proceeding." -msgstr "O campo Nome está vazio. Por favor, preencha este campo antes de prosseguir." - -msgid "The Name field must be at least 3 letters." -msgstr "O campo Nome deve ter no mínimo 3 letras." - -msgid "The Email field is empty. Please fill in this field before proceeding." -msgstr "O campo Email está vazio. Por favor, preencha este campo antes de prosseguir." - -msgid "The Email field is invalid. Please enter a valid email address." -msgstr "O campo Email está inválido. Por favor, insira um endereço de email válido." - -msgid "Donation of " -msgstr "Doação de " - -msgid "Mercado Pago is not enabled for the classic and multistep form!" +# Link Nacional MercadoPago for GiveWP +msgid "Mercado Pago" +msgstr "Mercado Pago" + +msgid "Mercado Pago Token (Access Token)" +msgstr "Token do Mercado Pago (Acess Token)" + +msgid "Mercado Pago Token Code." +msgstr "Código Token do Mercado Pago." + +msgid "Mercado Pago Public Key (Public Key)" +msgstr "Chave Pública do Mercado Pago (Public Key)" + +msgid "Mercado Pago Public Key." +msgstr "Chave Pública do Mercado Pago." + +msgid "Title in Mercado Pago" +msgstr "Título no Mercado Pago" + +msgid "This title will be used during checkout in Mercado Pago." +msgstr "Esse título será utilizado durante o checkout no Mercado Pago." + +msgid "Description in Mercado Pago" +msgstr "Descrição no Mercado Pago" + +msgid "This description will be used during checkout in Mercado Pago." +msgstr "Essa descrição será utilizada durante o checkout no Mercado Pago." + +msgid "Development Environment" +msgstr "Ambiente de desenvolvimento" + +msgid "Enable the desired development environment: Sandbox or Production." +msgstr "Habilite o ambiente de desenvolvimento desejado: Sandbox ou Produção." + +msgid "Production" +msgstr "Produção" + +msgid "Sandbox" +msgstr "Sandbox" + +msgid "Debug" +msgstr "Depuração" + +msgid "Enable" +msgstr "Habilitar" + +msgid "Disable" +msgstr "Desabilitar" + +msgid "Advanced Debug Mode" +msgstr "Modo de Depuração avançada" + +msgid "Enable advanced Debug environment (CONSOLE - JAVASCRIPT). Be careful enabling this option will leave your site vulnerable." +msgstr "Habilitar ambiente para Debug avançado (CONSOLE - JAVASCRIPT). Atenção habilitar essa opção deixará seu site vulnerável." + +msgid "Enable Debug environment." +msgstr "Habilitar ambiente para Debug." + +msgid "The Name field is empty. Please fill in this field before proceeding." +msgstr "O campo Nome está vazio. Por favor, preencha este campo antes de prosseguir." + +msgid "The Name field must be at least 3 letters." +msgstr "O campo Nome deve ter no mínimo 3 letras." + +msgid "The Email field is empty. Please fill in this field before proceeding." +msgstr "O campo Email está vazio. Por favor, preencha este campo antes de prosseguir." + +msgid "The Email field is invalid. Please enter a valid email address." +msgstr "O campo Email está inválido. Por favor, insira um endereço de email válido." + +msgid "Donation of " +msgstr "Doação de " + +msgid "Mercado Pago is not enabled for the classic and multistep form!" msgstr "Mercado Pago não está habilitado para o formulário clássico e multistep!" \ No newline at end of file diff --git a/languages/lknmp-mercadopago-for-givewp.pot b/languages/lknmp-mercadopago-for-givewp.pot index 8efe8be..542c036 100755 --- a/languages/lknmp-mercadopago-for-givewp.pot +++ b/languages/lknmp-mercadopago-for-givewp.pot @@ -1,75 +1,75 @@ -# Link Nacional MercadoPago for GiveWP -msgid "Mercado Pago" -msgstr "" - -msgid "Mercado Pago Token (Access Token)" -msgstr "" - -msgid "Mercado Pago Token Code." -msgstr "" - -msgid "Mercado Pago Public Key" -msgstr "" - -msgid "Mercado Pago Public Key." -msgstr "" - -msgid "Title in Mercado Pago" -msgstr "" - -msgid "This title will be used during checkout in Mercado Pago." -msgstr "" - -msgid "Description in Mercado Pago" -msgstr "" - -msgid "This description will be used during checkout in Mercado Pago." -msgstr "" - -msgid "Development Environment" -msgstr "" - -msgid "Enable the desired development environment: Sandbox or Production." -msgstr "" - -msgid "Production" -msgstr "" - -msgid "Sandbox" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Advanced Debug Mode" -msgstr "" - -msgid "Enable advanced Debug environment (CONSOLE - JAVASCRIPT). Be careful enabling this option will leave your site vulnerable." -msgstr "" - -msgid "Enable Debug environment." -msgstr "" - -msgid "The Name field is empty. Please fill in this field before proceeding." -msgstr "" - -msgid "The Name field must be at least 3 letters." -msgstr "" - -msgid "The Email field is empty. Please fill in this field before proceeding." -msgstr "" - -msgid "The Email field is invalid. Please enter a valid email address." -msgstr "" - -msgid "Donation of " -msgstr "" - -msgid "Mercado Pago is not enabled for the classic and multistep form!" +# Link Nacional MercadoPago for GiveWP +msgid "Mercado Pago" +msgstr "" + +msgid "Mercado Pago Token (Access Token)" +msgstr "" + +msgid "Mercado Pago Token Code." +msgstr "" + +msgid "Mercado Pago Public Key" +msgstr "" + +msgid "Mercado Pago Public Key." +msgstr "" + +msgid "Title in Mercado Pago" +msgstr "" + +msgid "This title will be used during checkout in Mercado Pago." +msgstr "" + +msgid "Description in Mercado Pago" +msgstr "" + +msgid "This description will be used during checkout in Mercado Pago." +msgstr "" + +msgid "Development Environment" +msgstr "" + +msgid "Enable the desired development environment: Sandbox or Production." +msgstr "" + +msgid "Production" +msgstr "" + +msgid "Sandbox" +msgstr "" + +msgid "Debug" +msgstr "" + +msgid "Enable" +msgstr "" + +msgid "Disable" +msgstr "" + +msgid "Advanced Debug Mode" +msgstr "" + +msgid "Enable advanced Debug environment (CONSOLE - JAVASCRIPT). Be careful enabling this option will leave your site vulnerable." +msgstr "" + +msgid "Enable Debug environment." +msgstr "" + +msgid "The Name field is empty. Please fill in this field before proceeding." +msgstr "" + +msgid "The Name field must be at least 3 letters." +msgstr "" + +msgid "The Email field is empty. Please fill in this field before proceeding." +msgstr "" + +msgid "The Email field is invalid. Please enter a valid email address." +msgstr "" + +msgid "Donation of " +msgstr "" + +msgid "Mercado Pago is not enabled for the classic and multistep form!" msgstr "" \ No newline at end of file diff --git a/lknmp-gateway-givewp.php b/lknmp-gateway-givewp.php index 8d3b673..da5ac79 100755 --- a/lknmp-gateway-givewp.php +++ b/lknmp-gateway-givewp.php @@ -1,104 +1,104 @@ -=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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 - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/builtins/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} +{ + "name": "docker-php-dev-container", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "docker-php-dev-container", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "eslint": "^8.34.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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 + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 2c481de..e1fb478 100755 --- a/package.json +++ b/package.json @@ -1,24 +1,24 @@ -{ - "name": "docker-php-dev-container", - "version": "1.0.0", - "description": "This repository provides a development environment for WHMCS or WordPress", - "repository": { - "type": "git", - "url": "git+https://github.com/srbrunoferreira/docker-php-dev-container.git" - }, - "keywords": ["WordPress", "WHMCS", "plugin", "Dev Container", "VS Code"], - "author": "Bruno Ferreira ", - "license": "MIT", - "bugs": { - "url": "https://github.com/srbrunoferreira/docker-php-dev-container/issues" - }, - "homepage": "https://github.com/srbrunoferreira/docker-php-dev-container#readme", - "devDependencies": { - "eslint": "^8.34.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^15.6.1", - "eslint-plugin-promise": "^6.1.1" - } -} +{ + "name": "docker-php-dev-container", + "version": "1.0.0", + "description": "This repository provides a development environment for WHMCS or WordPress", + "repository": { + "type": "git", + "url": "git+https://github.com/srbrunoferreira/docker-php-dev-container.git" + }, + "keywords": ["WordPress", "WHMCS", "plugin", "Dev Container", "VS Code"], + "author": "Bruno Ferreira ", + "license": "MIT", + "bugs": { + "url": "https://github.com/srbrunoferreira/docker-php-dev-container/issues" + }, + "homepage": "https://github.com/srbrunoferreira/docker-php-dev-container#readme", + "devDependencies": { + "eslint": "^8.34.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1" + } +} diff --git a/uninstall.php b/uninstall.php index d8b7369..af736fa 100755 --- a/uninstall.php +++ b/uninstall.php @@ -1,53 +1,53 @@ - Date: Fri, 27 Sep 2024 19:47:26 +0000 Subject: [PATCH 2/4] fix: Erro 503 with checkout pro --- Public/LknmpGatewayGiveWPGateway.php | 3 +-- Public/js/plugin-script.js | 8 +++++++- package.json | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Public/LknmpGatewayGiveWPGateway.php b/Public/LknmpGatewayGiveWPGateway.php index 415fd68..fc7c07d 100755 --- a/Public/LknmpGatewayGiveWPGateway.php +++ b/Public/LknmpGatewayGiveWPGateway.php @@ -149,8 +149,7 @@ public function enqueueScript(int $formId): void { $hastoken = ! empty($configs['token']) && strlen($configs['token']) > 10 ? 'true' : 'false'; $haspublicKey = ! empty($configs['key']) && strlen($configs['key']) > 10 ? 'true' : 'false'; - wp_enqueue_script( self::id(), plugin_dir_url( __FILE__ ) . 'js/plugin-script.js', array('jquery', self::id() . 'MercadoPago'), LKNMP_GATEWAY_GIVEWP_VERSION, true ); - wp_enqueue_script( self::id() . 'MercadoPago', plugin_dir_url( __FILE__ ) . 'js/MercadoPago.js', array(), LKNMP_GATEWAY_GIVEWP_VERSION, false); + wp_enqueue_script( self::id(), plugin_dir_url( __FILE__ ) . 'js/plugin-script.js', array('jquery'), LKNMP_GATEWAY_GIVEWP_VERSION, true ); wp_localize_script(self::id(), 'urlPag', $url_pagina); wp_localize_script(self::id(), 'idUnique', uniqid()); diff --git a/Public/js/plugin-script.js b/Public/js/plugin-script.js index 911a3f3..ae5327d 100755 --- a/Public/js/plugin-script.js +++ b/Public/js/plugin-script.js @@ -387,4 +387,10 @@ const LknmpGatewayGiveWP = { } } }; -window.givewp.gateways.register(LknmpGatewayGiveWP); \ No newline at end of file +var script = document.createElement('script'); +script.src = 'https://sdk.mercadopago.com/js/v2'; +script.async = true; +document.head.appendChild(script); + +window.givewp.gateways.register(LknmpGatewayGiveWP); + diff --git a/package.json b/package.json index e1fb478..36e014f 100755 --- a/package.json +++ b/package.json @@ -21,4 +21,4 @@ "eslint-plugin-n": "^15.6.1", "eslint-plugin-promise": "^6.1.1" } -} +} \ No newline at end of file From cc71b0d36e4cf620b5dfa4995c8d65b12ec3ed62 Mon Sep 17 00:00:00 2001 From: emanuellopess Date: Fri, 27 Sep 2024 17:01:14 -0300 Subject: [PATCH 3/4] chore: Update version to 1.2.3 --- .github/workflows/main.yml | 2 +- CHANGELOG.md | 3 +++ README.txt | 5 ++++- lknmp-gateway-givewp.php | 4 ++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8b3d6f8..21358ae 100755 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -47,7 +47,7 @@ jobs: uses: mathieudutour/github-tag-action@v6.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} - custom_tag: '1.2.2' # // TODO caso necessário definir a tag da release manualmente + custom_tag: '1.2.3' # // TODO caso necessário definir a tag da release manualmente # Generate new release - name: Generate new Release diff --git a/CHANGELOG.md b/CHANGELOG.md index 758347c..43fe9ae 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 1.2.3 - 27/09/2024 +* Correção de problema no script do SDK do Mercado Pago. + # 1.2.2 - 25/09/2024 * Atualização de documentação; * Correção de slug de tradução no formato incorreto; diff --git a/README.txt b/README.txt index 5453f33..f717cef 100755 --- a/README.txt +++ b/README.txt @@ -4,7 +4,7 @@ Donate link: https://www.linknacional.com.br/wordpress/givewp/ Tags: givewp, payment, mercadopago, card Requires at least: 5.7 Tested up to: 6.6 -Stable tag: 1.2.2 +Stable tag: 1.2.3 Requires PHP: 7.4 License: GPLv3 or later License URI: http://www.gnu.org/licenses/gpl-3.0.html @@ -80,6 +80,9 @@ The Link Nacional MercadoPago for GiveWP plugin is now live and working. == Changelog == += 1.2.3 = *2024/09/27* +* Fixed bug on Mercado Pago SDK load. + = 1.2.2 = *2024/09/25* * Update documentation; * Fix translation mismatch issues; diff --git a/lknmp-gateway-givewp.php b/lknmp-gateway-givewp.php index da5ac79..a1d7600 100755 --- a/lknmp-gateway-givewp.php +++ b/lknmp-gateway-givewp.php @@ -16,7 +16,7 @@ * Requires Plugins: give * Plugin URI: https://www.linknacional.com.br/wordpress/givewp/ * Description: MercadoPago Payment Gateway for GiveWP donation plugin for WordPress. - * Version: 1.2.2 + * Version: 1.2.3 * Author: Link Nacional * Author URI: https://www.linknacional.com.br/wordpress/givewp// * License: GPL-3.0+ @@ -42,7 +42,7 @@ * Rename this for your plugin and update it as you release new versions. */ if ( ! defined('LKNMP_GATEWAY_GIVEWP_VERSION')) { - define( 'LKNMP_GATEWAY_GIVEWP_VERSION', '1.2.2' ); + define( 'LKNMP_GATEWAY_GIVEWP_VERSION', '1.2.3' ); } if ( ! defined('LKNMP_GATEWAY_MIN_GIVE_VERSION')) { From a195f02bde4bc9321cf58dbff019f4f2a3846bf4 Mon Sep 17 00:00:00 2001 From: emanuellopess Date: Fri, 27 Sep 2024 17:07:51 -0300 Subject: [PATCH 4/4] fix: Fixed error on script build --- Public/js/lknmp-gateway-givewp-public.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Public/js/lknmp-gateway-givewp-public.js b/Public/js/lknmp-gateway-givewp-public.js index c1a2240..63c0a9c 100755 --- a/Public/js/lknmp-gateway-givewp-public.js +++ b/Public/js/lknmp-gateway-givewp-public.js @@ -33,16 +33,19 @@ } async function criarPreferenciaDePagamento() { - if (lknmpGlobals.advDebug == 'enabled') { - console.log(amountGive.value); - } - let valorText const proAmount = document.querySelector('input[name="custom_amount"]') if(proAmount) { valorText = proAmount.value } else { - valorText = document.getElementsByName('give-amount')[0].value + valorText = document.getElementsByName('give-amount') + if(valorText[0]){ + valorText = valorText[0].value + } + } + + if (lknmpGlobals.advDebug == 'enabled') { + console.log(valorText); } let amount = valorText