Automattic\WooCommerce\Blocks

DependencyDetection::get_all_dependenciesprivateWC 1.0

Recursively get all dependencies including nested ones.

Method of the class: DependencyDetection{}

No Hooks.

Returns

Array. All dependencies (flattened).

Usage

// private - for code of main (parent) class only
$result = $this->get_all_dependencies( $deps ): array;
$deps(array) (required)
Direct dependencies.

DependencyDetection::get_all_dependencies() code WC 10.7.0

private function get_all_dependencies( array $deps ): array {
	$wp_scripts      = wp_scripts();
	$all_deps        = array();
	$deps_to_process = $deps;

	while ( ! empty( $deps_to_process ) ) {
		$handle = array_shift( $deps_to_process );

		if ( in_array( $handle, $all_deps, true ) ) {
			continue;
		}

		$all_deps[] = $handle;

		// Add nested dependencies to process.
		if ( isset( $wp_scripts->registered[ $handle ] ) ) {
			foreach ( $wp_scripts->registered[ $handle ]->deps as $nested_dep ) {
				if ( ! in_array( $nested_dep, $all_deps, true ) ) {
					$deps_to_process[] = $nested_dep;
				}
			}
		}
	}

	// Filter to only include WooCommerce handles we care about.
	$wc_handles = array_values( self::WC_GLOBAL_EXPORTS );
	return array_values(
		array_filter(
			$all_deps,
			function ( $dep ) use ( $wc_handles ) {
				return in_array( $dep, $wc_handles, true );
			}
		)
	);
}