Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit 0025c5c

Browse files
committed
Adding /vendor directory to release
1 parent ca2e6f4 commit 0025c5c

File tree

114 files changed

+5176
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+5176
-0
lines changed

Diff for: vendor/autoload.php

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
// autoload.php @generated by Composer
4+
5+
require_once __DIR__ . '/composer/autoload_real.php';
6+
7+
return ComposerAutoloaderInitbc02a6c96a9ab67890a11e7b4ded859e::getLoader();

Diff for: vendor/autoload_packages.php

+205
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
<?php
2+
/**
3+
* This file `autoload_packages.php`was generated by automattic/jetpack-autoloader.
4+
*
5+
* From your plugin include this file with:
6+
* require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php';
7+
*
8+
* @package automattic/jetpack-autoloader
9+
*/
10+
11+
// phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound
12+
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
13+
// phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_ns_cFound
14+
15+
namespace Automattic\Jetpack\Autoloader;
16+
17+
if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_class' ) ) {
18+
global $jetpack_packages_classes;
19+
20+
if ( ! is_array( $jetpack_packages_classes ) ) {
21+
$jetpack_packages_classes = array();
22+
}
23+
/**
24+
* Adds the version of a package to the $jetpack_packages global array so that
25+
* the autoloader is able to find it.
26+
*
27+
* @param string $class_name Name of the class that you want to autoload.
28+
* @param string $version Version of the class.
29+
* @param string $path Absolute path to the class so that we can load it.
30+
*/
31+
function enqueue_package_class( $class_name, $version, $path ) {
32+
global $jetpack_packages_classes;
33+
34+
if ( ! isset( $jetpack_packages_classes[ $class_name ] ) ) {
35+
$jetpack_packages_classes[ $class_name ] = array(
36+
'version' => $version,
37+
'path' => $path,
38+
);
39+
40+
return;
41+
}
42+
// If we have a @dev version set always use that one!
43+
if ( 'dev-' === substr( $jetpack_packages_classes[ $class_name ]['version'], 0, 4 ) ) {
44+
return;
45+
}
46+
47+
// Always favour the @dev version. Since that version is the same as bleeding edge.
48+
// We need to make sure that we don't do this in production!
49+
if ( 'dev-' === substr( $version, 0, 4 ) ) {
50+
$jetpack_packages_classes[ $class_name ] = array(
51+
'version' => $version,
52+
'path' => $path,
53+
);
54+
55+
return;
56+
}
57+
// Set the latest version!
58+
if ( version_compare( $jetpack_packages_classes[ $class_name ]['version'], $version, '<' ) ) {
59+
$jetpack_packages_classes[ $class_name ] = array(
60+
'version' => $version,
61+
'path' => $path,
62+
);
63+
}
64+
}
65+
}
66+
67+
if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_file' ) ) {
68+
global $jetpack_packages_files;
69+
70+
if ( ! is_array( $jetpack_packages_files ) ) {
71+
$jetpack_packages_files = array();
72+
}
73+
/**
74+
* Adds the version of a package file to the $jetpack_packages_files global array so that
75+
* we can load the most recent version after 'plugins_loaded'.
76+
*
77+
* @param string $file_identifier Unique id to file assigned by composer based on package name and filename.
78+
* @param string $version Version of the file.
79+
* @param string $path Absolute path to the file so that we can load it.
80+
*/
81+
function enqueue_package_file( $file_identifier, $version, $path ) {
82+
global $jetpack_packages_files;
83+
84+
if ( ! isset( $jetpack_packages_files[ $file_identifier ] ) ) {
85+
$jetpack_packages_files[ $file_identifier ] = array(
86+
'version' => $version,
87+
'path' => $path,
88+
);
89+
90+
return;
91+
}
92+
// If we have a @dev version set always use that one!
93+
if ( 'dev-' === substr( $jetpack_packages_files[ $file_identifier ]['version'], 0, 4 ) ) {
94+
return;
95+
}
96+
97+
// Always favour the @dev version. Since that version is the same as bleeding edge.
98+
// We need to make sure that we don't do this in production!
99+
if ( 'dev-' === substr( $version, 0, 4 ) ) {
100+
$jetpack_packages_files[ $file_identifier ] = array(
101+
'version' => $version,
102+
'path' => $path,
103+
);
104+
105+
return;
106+
}
107+
// Set the latest version!
108+
if ( version_compare( $jetpack_packages_files[ $file_identifier ]['version'], $version, '<' ) ) {
109+
$jetpack_packages_files[ $file_identifier ] = array(
110+
'version' => $version,
111+
'path' => $path,
112+
);
113+
}
114+
}
115+
}
116+
117+
if ( ! function_exists( __NAMESPACE__ . '\file_loader' ) ) {
118+
/**
119+
* Include latest version of all enqueued files. Should be called after all plugins are loaded.
120+
*/
121+
function file_loader() {
122+
global $jetpack_packages_files;
123+
foreach ( $jetpack_packages_files as $file_identifier => $file_data ) {
124+
if ( empty( $GLOBALS['__composer_autoload_files'][ $file_identifier ] ) ) {
125+
require $file_data['path'];
126+
127+
$GLOBALS['__composer_autoload_files'][ $file_identifier ] = true;
128+
}
129+
}
130+
}
131+
}
132+
133+
if ( ! function_exists( __NAMESPACE__ . '\autoloader' ) ) {
134+
/**
135+
* Used for autoloading jetpack packages.
136+
*
137+
* @param string $class_name Class Name to load.
138+
*/
139+
function autoloader( $class_name ) {
140+
global $jetpack_packages_classes;
141+
142+
if ( isset( $jetpack_packages_classes[ $class_name ] ) ) {
143+
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
144+
// TODO ideally we shouldn't skip any of these, see: https://github.com/Automattic/jetpack/pull/12646.
145+
$ignore = in_array(
146+
$class_name,
147+
array(
148+
'Automattic\Jetpack\Connection\Manager',
149+
),
150+
true
151+
);
152+
153+
if ( ! $ignore && function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) ) {
154+
_doing_it_wrong(
155+
esc_html( $class_name ),
156+
sprintf(
157+
/* translators: %s Name of a PHP Class */
158+
esc_html__( 'Not all plugins have loaded yet but we requested the class %s', 'jetpack' ),
159+
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
160+
$class_name
161+
),
162+
esc_html( $jetpack_packages_classes[ $class_name ]['version'] )
163+
);
164+
}
165+
}
166+
167+
require_once $jetpack_packages_classes[ $class_name ]['path'];
168+
169+
return true;
170+
}
171+
172+
return false;
173+
}
174+
175+
// Add the jetpack autoloader.
176+
spl_autoload_register( __NAMESPACE__ . '\autoloader' );
177+
}
178+
/**
179+
* Prepare all the classes for autoloading.
180+
*/
181+
function enqueue_packages_d92d2bd76ddd012e2c7ff35a970dccc0() {
182+
$class_map = require_once dirname( __FILE__ ) . '/composer/autoload_classmap_package.php';
183+
foreach ( $class_map as $class_name => $class_info ) {
184+
enqueue_package_class( $class_name, $class_info['version'], $class_info['path'] );
185+
}
186+
187+
$autoload_file = __DIR__ . '/composer/autoload_files_package.php';
188+
189+
$includeFiles = file_exists( $autoload_file )
190+
? require $autoload_file
191+
: array();
192+
193+
foreach ( $includeFiles as $fileIdentifier => $file_data ) {
194+
enqueue_package_file( $fileIdentifier, $file_data[ 'version' ], $file_data[ 'path' ] );
195+
}
196+
197+
if ( function_exists( 'has_action') && function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) && false === has_action( 'plugins_loaded', __NAMESPACE__ . '\file_loader' ) ) {
198+
// Add action if it has not been added and has not happened yet.
199+
// Priority -10 to load files as early as possible in case plugins try to use them during `plugins_loaded`.
200+
add_action( 'plugins_loaded', __NAMESPACE__ . '\file_loader', 0, -10 );
201+
} elseif( ! function_exists( 'did_action' ) || did_action( 'plugins_loaded' ) ) {
202+
file_loader(); // Either WordPress is not loaded or plugin is doing it wrong. Either way we'll load the files so nothing breaks.
203+
}
204+
}
205+
enqueue_packages_d92d2bd76ddd012e2c7ff35a970dccc0();

Diff for: vendor/automattic/jetpack-autoloader/README.md

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
A custom autoloader for Composer
2+
=====================================
3+
4+
This is a custom autoloader generator that uses a classmap to always load the latest version of a class.
5+
6+
The problem this autoloader is trying to solve is conflicts that arise when two or more plugins use the same package, but one of the plugins uses an older version of said package.
7+
8+
This is solved by keeping an in memory map of all the different classes that can be loaded, and updating the map with the path to the latest version of the package for the autoloader to find when we instantiate the class.
9+
This only works if we instantiate the class after all the plugins have loaded. That is why the class produces an error if the plugin calls a class but has not loaded all the plugins yet.
10+
11+
It diverges from the default Composer autoloader setup in the following ways:
12+
13+
* It creates an `autoload_classmap_package.php` file in the `vendor/composer` directory.
14+
* This file includes the version numbers from each package that is used.
15+
* The autoloader will only load the latest version of the library no matter what plugin loads the library.
16+
* Only call the library classes after all the plugins have loaded and the `plugins_loaded` action has fired.
17+
18+
19+
Usage
20+
-----
21+
22+
In your project's `composer.json`, add the following lines:
23+
24+
```json
25+
{
26+
"require-dev": {
27+
"automattic/jetpack-autoloader": "^1"
28+
}
29+
}
30+
```
31+
32+
After the next update/install, you will have a `vendor/autoload_packages.php` file.
33+
Load the file in your plugin via main plugin file.
34+
35+
In the main plugin you will also need to include the files like this.
36+
```php
37+
require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php';
38+
```
39+
40+
41+
Current Limitations
42+
-----
43+
44+
We currently only support packages that autoload via psr-4 definition in their package.

Diff for: vendor/automattic/jetpack-autoloader/composer.json

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"name": "automattic/jetpack-autoloader",
3+
"description": "Creates a custom autoloader for a plugin or theme.",
4+
"type": "composer-plugin",
5+
"license": "GPL-2.0-or-later",
6+
"require": {
7+
"composer-plugin-api": "^1.1"
8+
},
9+
"require-dev": {
10+
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5"
11+
},
12+
"autoload": {
13+
"psr-4": {
14+
"Automattic\\Jetpack\\Autoloader\\": "src"
15+
}
16+
},
17+
"extra": {
18+
"class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin"
19+
},
20+
"scripts": {
21+
"phpunit": [
22+
"@composer install",
23+
"./vendor/phpunit/phpunit/phpunit --colors=always"
24+
]
25+
},
26+
"minimum-stability": "dev",
27+
"prefer-stable": true
28+
}

0 commit comments

Comments
 (0)