Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: PHPStan fixes for cherrypicking #1

Draft
wants to merge 26 commits into
base: tools/phpstan
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a9f570d
fix: wrong number of `$accepted_args` on `add_filter()` calls
justlevine Dec 28, 2024
41f1e8d
chore (phpstan): specifiy possible return values for `get_wp_template…
justlevine Dec 28, 2024
bdf378e
phpstan: level 1 checkpoint
justlevine Dec 28, 2024
d0684a0
chore: regenerate baselines
justlevine Dec 28, 2024
146417e
docs: fix missing filter `@param` names in WP_Theme_JSON_Resolver_Gut…
justlevine Dec 28, 2024
ce085f9
fix: ensure `base_convert` is type `int` before division
justlevine Dec 28, 2024
ca4a3cb
docs: fix param name in `gutenberg_add_can_update_block_bindings_edit…
justlevine Dec 28, 2024
86f329e
docs: fix doctype in _gutenberg_add_block_template_plugin_attribute()
justlevine Dec 28, 2024
02fd16c
continue-fix: ensure `base_convert` is type `int` before division
justlevine Dec 28, 2024
b463698
docs: fix retun type on gutenberg_get_typography_value_and_unit()
justlevine Dec 28, 2024
dd0c1d2
docs: fix missing `false` return type on gutenberg_register_block_mod…
justlevine Dec 28, 2024
36641f5
fix: check contents of `$matches[1]` in gutenberg_get_block_style_var…
justlevine Dec 28, 2024
e3554f2
fix: strict int to float comparison in gutenberg_tinycolor_bound01()
justlevine Dec 28, 2024
dbd0482
chore: remove always-true from condition in `gutenberg_register_shado…
justlevine Dec 28, 2024
5536a3b
fix: undefined array key in WP_Duotone_Gutenberg::colord_parse_hue()
justlevine Dec 28, 2024
97a2c76
chore: remove dead code in WP_Theme_JSON_Gutenberg::get_block_nodes()
justlevine Dec 28, 2024
010a236
fix: incorrect conditional check in WP_Theme_JSON_Gutenberg::convert_…
justlevine Dec 28, 2024
b0ed7bc
fix: check for `empty( $menu_items )` in gutenberg_remove_block_nav_…
justlevine Dec 28, 2024
968d248
fix: cast `$parent_column_value` before exploding in gutenberg_render…
justlevine Dec 28, 2024
a648cfd
fix: cast `$match[1]` to float in WP_DuotoneGutenberg::colord_parse_h…
justlevine Dec 28, 2024
7bb19e3
docs: fix $metadata param type in WP_Theme_JSON_Gutenberg::get_featur…
justlevine Dec 28, 2024
62a3990
fix: invalid `_doing_it_wrong()` for `experimental-link-color`
justlevine Dec 28, 2024
08e20b4
fix: remove invalid param from wp_register_style() in gutenberg_enque…
justlevine Dec 28, 2024
2cdedf1
fix: incorrect condiional check in Gutenberg_Token_Map_6_7::read_smal…
justlevine Dec 28, 2024
7b6b735
fix: setcookie() $value must be string in Gutenberg_HTTP_Signaling_Se…
justlevine Dec 28, 2024
3e4c557
[PHPStan]: generate baselines
justlevine Dec 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/block-supports/block-style-variations.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function gutenberg_get_block_style_variation_name_from_class( $class_string ) {
}

preg_match_all( '/\bis-style-(?!default)(\S+)\b/', $class_string, $matches );
return $matches[1] ?? null;
return ! empty( $matches[1] ) ? $matches[1] : null;
}

/**
Expand Down Expand Up @@ -273,7 +273,7 @@ function gutenberg_enqueue_block_style_variation_styles() {
}

// Add Gutenberg filters and action.
add_filter( 'render_block_data', 'gutenberg_render_block_style_variation_support_styles', 10, 2 );
add_filter( 'render_block_data', 'gutenberg_render_block_style_variation_support_styles' );
add_filter( 'render_block', 'gutenberg_render_block_style_variation_class_name', 10, 2 );
add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_block_style_variation_styles', 1 );

Expand Down
6 changes: 3 additions & 3 deletions lib/block-supports/duotone.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
function gutenberg_tinycolor_bound01( $n, $max ) {
_deprecated_function( __FUNCTION__, '6.3.0' );

if ( 'string' === gettype( $n ) && str_contains( $n, '.' ) && 1 === (float) $n ) {
if ( 'string' === gettype( $n ) && str_contains( $n, '.' ) && 1.0 === (float) $n ) {
$n = '100%';
}

Expand Down Expand Up @@ -309,7 +309,7 @@ function gutenberg_tinycolor_string_to_rgb( $color_str ) {
);

$rgb['a'] = gutenberg_tinycolor_bound_alpha(
base_convert( $match[4], 16, 10 ) / 255
absint( base_convert( $match[4], 16, 10 ) ) / 255
);

return $rgb;
Expand Down Expand Up @@ -341,7 +341,7 @@ function gutenberg_tinycolor_string_to_rgb( $color_str ) {
);

$rgb['a'] = gutenberg_tinycolor_bound_alpha(
base_convert( $match[4] . $match[4], 16, 10 ) / 255
absint( base_convert( $match[4] . $match[4], 16, 10 ) ) / 255
);

return $rgb;
Expand Down
2 changes: 1 addition & 1 deletion lib/block-supports/layout.php
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,7 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) {
$column_start_number = floatval( $column_start );
$parent_column_width = $minimum_column_width ? $minimum_column_width : '12rem';
$parent_column_value = floatval( $parent_column_width );
$parent_column_unit = explode( $parent_column_value, $parent_column_width );
$parent_column_unit = explode( (string) $parent_column_value, $parent_column_width );

$num_cols_to_break_at = 2;
if ( $column_span_number && $column_start_number ) {
Expand Down
4 changes: 2 additions & 2 deletions lib/block-supports/shadow.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ function gutenberg_register_shadow_support( $block_type ) {
$block_type->attributes = array();
}

if ( $has_shadow_support && ! array_key_exists( 'style', $block_type->attributes ) ) {
if ( ! array_key_exists( 'style', $block_type->attributes ) ) {
$block_type->attributes['style'] = array(
'type' => 'object',
);
}

if ( $has_shadow_support && ! array_key_exists( 'shadow', $block_type->attributes ) ) {
if ( ! array_key_exists( 'shadow', $block_type->attributes ) ) {
$block_type->attributes['shadow'] = array(
'type' => 'string',
);
Expand Down
2 changes: 1 addition & 1 deletion lib/block-supports/typography.php
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ function gutenberg_render_typography_support( $block_content, $block ) {
* @type int $root_size_value Value of root font size for rem|em <-> px conversion. Default `16`.
* @type array<string> $acceptable_units An array of font size units. Default `[ 'rem', 'px', 'em' ]`;
* }
* @return array An array consisting of `'value'` and `'unit'` properties.
* @return ?array An array consisting of `'value'` and `'unit'` properties.
*/
function gutenberg_get_typography_value_and_unit( $raw_value, $options = array() ) {
if ( ! is_string( $raw_value ) && ! is_int( $raw_value ) && ! is_float( $raw_value ) ) {
Expand Down
10 changes: 4 additions & 6 deletions lib/class-wp-duotone-gutenberg.php
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,8 @@ private static function colord_parse_hue( $value, $unit = 'deg' ) {
'rad' => 360 / ( M_PI * 2 ),
);

$factor = $angle_units[ $unit ];
if ( ! $factor ) {
$factor = 1;
}
// If the unit is not recognized, default to degrees.
$factor = $angle_units[ $unit ] ?? 1;

return (float) $value * $factor;
}
Expand Down Expand Up @@ -206,7 +204,7 @@ private static function colord_parse_hex( $hex ) {
'r' => (int) base_convert( $hex[0] . $hex[0], 16, 10 ),
'g' => (int) base_convert( $hex[1] . $hex[1], 16, 10 ),
'b' => (int) base_convert( $hex[2] . $hex[2], 16, 10 ),
'a' => 4 === strlen( $hex ) ? round( base_convert( $hex[3] . $hex[3], 16, 10 ) / 255, 2 ) : 1,
'a' => 4 === strlen( $hex ) ? round( absint( base_convert( $hex[3] . $hex[3], 16, 10 ) ) / 255, 2 ) : 1,
);
}

Expand Down Expand Up @@ -410,7 +408,7 @@ private static function colord_parse_hsla_string( $input ) {

$hsla = self::colord_clamp_hsla(
array(
'h' => self::colord_parse_hue( $match[1], $match[2] ),
'h' => self::colord_parse_hue( (float) $match[1], $match[2] ),
's' => (float) $match[3],
'l' => (float) $match[4],
'a' => '' === $match[5] ? 1 : (float) $match[5] / ( $match[6] ? 100 : 1 ),
Expand Down
10 changes: 2 additions & 8 deletions lib/class-wp-theme-json-gutenberg.php
Original file line number Diff line number Diff line change
Expand Up @@ -2823,12 +2823,6 @@ private static function get_block_nodes( $theme_json, $selectors = array(), $opt
foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element ] as $pseudo_selector ) {
if ( isset( $theme_json['styles']['blocks'][ $name ]['elements'][ $element ][ $pseudo_selector ] ) ) {
$node_path = array( 'styles', 'blocks', $name, 'elements', $element );
if ( $include_node_paths_only ) {
$nodes[] = array(
'path' => $node_path,
);
continue;
}

$nodes[] = array(
'path' => $node_path,
Expand Down Expand Up @@ -4325,7 +4319,7 @@ protected static function get_block_element_selectors( $root_selector ) {
* typography etc, that have custom selectors in their related block's
* metadata.
*
* @param object $metadata The related block metadata containing selectors.
* @param array $metadata The related block metadata containing selectors.
* @param object $node A merged theme.json node for block or variation.
*
* @return array The style declarations for the node's features with custom
Expand Down Expand Up @@ -4483,7 +4477,7 @@ private static function convert_variables_to_value( $styles, $values ) {
continue;
}

if ( 0 <= strpos( $style, 'var(' ) ) {
if ( false !== strpos( $style, 'var(' ) ) {
// find all the variables in the string in the form of var(--variable-name, fallback), with fallback in the second capture group.

$has_matches = preg_match_all( '/var\(([^),]+)?,?\s?(\S+)?\)/', $style, $var_parts );
Expand Down
10 changes: 5 additions & 5 deletions lib/class-wp-theme-json-resolver-gutenberg.php
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ public static function get_core_data() {
*
* @since 6.1.0
*
* @param WP_Theme_JSON_Data_Gutenberg Class to access and update the underlying data.
* @param WP_Theme_JSON_Data_Gutenberg $instance Class to access and update the underlying data.
*/
$theme_json = apply_filters( 'wp_theme_json_data_default', new WP_Theme_JSON_Data_Gutenberg( $config, 'default' ) );
static::$core = $theme_json->get_theme_json();
Expand Down Expand Up @@ -276,7 +276,7 @@ public static function get_theme_data( $deprecated = array(), $options = array()
*
* @since 6.1.0
*
* @param WP_Theme_JSON_Data_Gutenberg Class to access and update the underlying data.
* @param WP_Theme_JSON_Data_Gutenberg $instance Class to access and update the underlying data.
*/
$theme_json = apply_filters( 'wp_theme_json_data_theme', new WP_Theme_JSON_Data_Gutenberg( $theme_json_data, 'theme' ) );
static::$theme = $theme_json->get_theme_json();
Expand Down Expand Up @@ -359,7 +359,7 @@ public static function get_theme_data( $deprecated = array(), $options = array()
}
if ( current_theme_supports( 'experimental-link-color' ) ) {
_doing_it_wrong(
current_theme_supports( 'experimental-link-color' ),
"add_theme_support( 'experimental-link-color' )",
__( '`experimental-link-color` is no longer supported. Use `link-color` instead.', 'gutenberg' ),
'6.3.0'
);
Expand Down Expand Up @@ -411,7 +411,7 @@ public static function get_block_data() {
*
* @since 6.1.0
*
* @param WP_Theme_JSON_Data_Gutenberg Class to access and update the underlying data.
* @param WP_Theme_JSON_Data_Gutenberg $instance Class to access and update the underlying data.
*/
$theme_json = apply_filters( 'wp_theme_json_data_blocks', new WP_Theme_JSON_Data_Gutenberg( $config, 'blocks' ) );
static::$blocks = $theme_json->get_theme_json();
Expand Down Expand Up @@ -544,7 +544,7 @@ public static function get_user_data() {
*
* @since 6.1.0
*
* @param WP_Theme_JSON_Data_Gutenberg Class to access and update the underlying data.
* @param WP_Theme_JSON_Data_Gutenberg $instance Class to access and update the underlying data.
*/
$theme_json = apply_filters( 'wp_theme_json_data_user', new WP_Theme_JSON_Data_Gutenberg( $config, 'custom' ) );

Expand Down
4 changes: 2 additions & 2 deletions lib/client-assets.php
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ function gutenberg_enqueue_stored_styles( $options = array() ) {

// Combines Core styles.
if ( ! empty( $compiled_core_stylesheet ) ) {
wp_register_style( $style_tag_id, false, array(), true, true );
wp_register_style( $style_tag_id, false, array(), true );
wp_add_inline_style( $style_tag_id, $compiled_core_stylesheet );
wp_enqueue_style( $style_tag_id );
}
Expand All @@ -562,7 +562,7 @@ function gutenberg_enqueue_stored_styles( $options = array() ) {
$styles = gutenberg_style_engine_get_stylesheet_from_context( $store_name, $options );
if ( ! empty( $styles ) ) {
$key = "wp-style-engine-$store_name";
wp_register_style( $key, false, array(), true, true );
wp_register_style( $key, false, array(), true );
wp_add_inline_style( $key, $styles );
wp_enqueue_style( $key );
}
Expand Down
2 changes: 1 addition & 1 deletion lib/compat/wordpress-6.7/block-bindings.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ function gutenberg_bootstrap_server_block_bindings_sources() {
/**
* Initialize `canUpdateBlockBindings` editor setting if it doesn't exist. By default, it is `true` only for admin users.
*
* @param array $settings The block editor settings from the `block_editor_settings_all` filter.
* @param array $editor_settings The block editor settings from the `block_editor_settings_all` filter.
* @return array The editor settings including `canUpdateBlockBindings`.
*/
function gutenberg_add_can_update_block_bindings_editor_setting( $editor_settings ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public function prepare_item_for_response( $item, $request ) {
* Returns the source from where the template originally comes from.
*
* @param WP_Block_Template $template_object Template instance.
* @return string Original source of the template one of theme, plugin, site, or user.
* @return 'theme'|'plugin'|'site'|'user' Original source of the template one of theme.
*/
// @core-merge: Changed the comments format (from inline to multi-line) in the entire function.
private static function get_wp_templates_original_source_field( $template_object ) {
Expand Down
2 changes: 1 addition & 1 deletion lib/compat/wordpress-6.7/class-gutenberg-token-map-6-7.php
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,7 @@ private function read_small_token( string $text, int $offset = 0, &$matched_toke

if (
$search_text[ $adjust ] !== $this->small_words[ $at + $adjust ] &&
( ! $ignore_case || strtoupper( $this->small_words[ $at + $adjust ] !== $search_text[ $adjust ] ) )
( ! $ignore_case || strtoupper( $this->small_words[ $at + $adjust ] ) !== $search_text[ $adjust ] )
) {
$at += $this->key_length + 1;
continue 2;
Expand Down
4 changes: 2 additions & 2 deletions lib/compat/wordpress-6.7/compat.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ function ( $registered_template ) use ( $template_files ) {
/**
* Hooks into `get_block_template` to add the `plugin` property when necessary.
*
* @param [WP_Block_Template|null] $block_template The found block template, or null if there isn’t one.
* @return [WP_Block_Template|null] The block template that was already found with the plugin property defined if it was registered by a plugin.
* @param WP_Block_Template|null $block_template The found block template, or null if there isn’t one.
* @return WP_Block_Template|null The block template that was already found with the plugin property defined if it was registered by a plugin.
*/
function _gutenberg_add_block_template_plugin_attribute( $block_template ) {
if ( $block_template ) {
Expand Down
2 changes: 1 addition & 1 deletion lib/experimental/kses-allowed-html.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ function gutenberg_kses_allowed_html( $allowedtags ) {
);
return $allowedtags;
}
add_filter( 'wp_kses_allowed_html', 'gutenberg_kses_allowed_html', 10, 2 );
add_filter( 'wp_kses_allowed_html', 'gutenberg_kses_allowed_html' );
4 changes: 2 additions & 2 deletions lib/experimental/navigation-theme-opt-in.php
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,8 @@
// We should uncomment the line below when the block-nav-menus feature becomes stable.
// @see https://github.com/WordPress/gutenberg/issues/34265.
/*if ( current_theme_supports( 'block-nav-menus' ) ) {*/
if ( false ) {
return $menu_items;
if ( empty( $menu_items ) ) {
return [];

Check failure on line 159 in lib/experimental/navigation-theme-opt-in.php

View workflow job for this annotation

GitHub Actions / PHP coding standards

Short array syntax is not allowed
}

return array_filter(
Expand Down
2 changes: 1 addition & 1 deletion lib/experimental/script-modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ function gutenberg_filter_block_type_metadata_settings_register_view_module( $se
* @param string $field_name Field name to pick from metadata.
* @param int $index Optional. Index of the script to register when multiple items passed.
* Default 0.
* @return string Module ID.
* @return string|false Module ID.
*/
function gutenberg_register_block_module_id( $metadata, $field_name, $index = 0 ) {
if ( empty( $metadata[ $field_name ] ) ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ private static function handle_read_pending_messages( $subscriber_to_messages_pa
if ( ! $fd ) {
$retries = isset( $_COOKIE['signaling_server_retries'] ) ? intval( $_COOKIE['signaling_server_retries'] ) : 0;
$secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );
setcookie( 'signaling_server_retries', $retries + 1, time() + DAY_IN_SECONDS, SITECOOKIEPATH, '', $secure );
setcookie( 'signaling_server_retries', (string) ( $retries + 1 ), time() + DAY_IN_SECONDS, SITECOOKIEPATH, '', $secure );
echo 'id: ' . time() . PHP_EOL;
echo 'event: error' . PHP_EOL;
echo 'data: ' . 'Could not open required file.' . PHP_EOL . PHP_EOL;
Expand All @@ -183,7 +183,7 @@ private static function handle_read_pending_messages( $subscriber_to_messages_pa
if ( isset( $_COOKIE['signaling_server_retries'] ) ) {
$secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );
// unset the cookie using a past expiration date.
setcookie( 'signaling_server_retries', 0, time() - DAY_IN_SECONDS, SITECOOKIEPATH, '', $secure );
setcookie( 'signaling_server_retries', '0', time() - DAY_IN_SECONDS, SITECOOKIEPATH, '', $secure );
}

echo 'retry: 3000' . PHP_EOL;
Expand Down
2 changes: 1 addition & 1 deletion lib/rest-api.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function gutenberg_override_global_styles_endpoint( array $args ): array {

return $args;
}
add_filter( 'register_wp_global_styles_post_type_args', 'gutenberg_override_global_styles_endpoint', 10, 2 );
add_filter( 'register_wp_global_styles_post_type_args', 'gutenberg_override_global_styles_endpoint' );

/**
* Registers the Edit Site Export REST API routes.
Expand Down
48 changes: 0 additions & 48 deletions tools/phpstan/baseline/level-0.php
Original file line number Diff line number Diff line change
@@ -1,65 +1,17 @@
<?php declare(strict_types = 1);

$ignoreErrors = [];
$ignoreErrors[] = [
// identifier: arguments.count
'message' => '#^Callback expects 1 parameter, \\$accepted_args is set to 2\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/block-supports/block-style-variations.php',
];
$ignoreErrors[] = [
// identifier: return.missing
'message' => '#^Function gutenberg_tinycolor_string_to_rgb\\(\\) should return array but return statement is missing\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/block-supports/duotone.php',
];
$ignoreErrors[] = [
// identifier: return.missing
'message' => '#^Method WP_Duotone_Gutenberg\\:\\:get_selector\\(\\) should return string but return statement is missing\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/class-wp-duotone-gutenberg.php',
];
$ignoreErrors[] = [
// identifier: return.missing
'message' => '#^Method WP_Theme_JSON_Gutenberg\\:\\:should_override_preset\\(\\) should return bool but return statement is missing\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/class-wp-theme-json-gutenberg.php',
];
$ignoreErrors[] = [
// identifier: phpDoc.parseError
'message' => '#^One or more @param tags has an invalid name or invalid syntax\\.$#',
'count' => 4,
'path' => __DIR__ . '/../../../lib/class-wp-theme-json-resolver-gutenberg.php',
];
$ignoreErrors[] = [
// identifier: class.notFound
'message' => '#^Call to static method get_stores\\(\\) on an unknown class WP_Style_Engine_CSS_Rules_Store_Gutenberg\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/client-assets.php',
];
$ignoreErrors[] = [
// identifier: new.static
'message' => '#^Unsafe usage of new static\\(\\)\\.$#',
'count' => 2,
'path' => __DIR__ . '/../../../lib/compat/wordpress-6.6/class-gutenberg-token-map-6-6.php',
];
$ignoreErrors[] = [
// identifier: return.missing
'message' => '#^Method Gutenberg_REST_Templates_Controller_6_7\\:\\:get_wp_templates_author_text_field\\(\\) should return string but return statement is missing\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/compat/wordpress-6.7/class-gutenberg-rest-templates-controller-6-7.php',
];
$ignoreErrors[] = [
// identifier: arguments.count
'message' => '#^Callback expects 1 parameter, \\$accepted_args is set to 2\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/experimental/kses-allowed-html.php',
];
$ignoreErrors[] = [
// identifier: arguments.count
'message' => '#^Callback expects 1 parameter, \\$accepted_args is set to 2\\.$#',
'count' => 1,
'path' => __DIR__ . '/../../../lib/rest-api.php',
];

return ['parameters' => ['ignoreErrors' => $ignoreErrors]];
Loading
Loading