init
This commit is contained in:
+25
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
if (PHP_VERSION_ID < 50600) {
|
||||
if (!headers_sent()) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
}
|
||||
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||
if (!ini_get('display_errors')) {
|
||||
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||
fwrite(STDERR, $err);
|
||||
} elseif (!headers_sent()) {
|
||||
echo $err;
|
||||
}
|
||||
}
|
||||
trigger_error(
|
||||
$err,
|
||||
E_USER_ERROR
|
||||
);
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3::getLoader();
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
require_once __DIR__ . '/jetpack-autoloader/class-autoloader.php';
|
||||
Autoloader::init();
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-backup/src/class-package-version.php';
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php';
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-connection/src/class-client.php';
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-connection/src/class-urls.php';
|
||||
@@ -0,0 +1,214 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.5.2] - 2025-02-03
|
||||
### Changed
|
||||
- Internal updates.
|
||||
|
||||
## [0.5.1] - 2024-11-25
|
||||
### Changed
|
||||
- Updated dependencies. [#40286]
|
||||
|
||||
## [0.5.0] - 2024-11-14
|
||||
### Removed
|
||||
- General: Update minimum PHP version to 7.2. [#40147]
|
||||
|
||||
## [0.4.13] - 2024-11-04
|
||||
### Added
|
||||
- Enable test coverage. [#39961]
|
||||
|
||||
## [0.4.12] - 2024-10-21
|
||||
### Fixed
|
||||
- Fixed the site features for Simple sites. [#39817]
|
||||
|
||||
## [0.4.11] - 2024-09-23
|
||||
### Changed
|
||||
- Update dependencies.
|
||||
|
||||
## [0.4.10] - 2024-09-05
|
||||
### Changed
|
||||
- Update dependencies.
|
||||
|
||||
## [0.4.9] - 2024-09-05
|
||||
### Changed
|
||||
- Update dependencies.
|
||||
|
||||
## [0.4.8] - 2024-08-23
|
||||
### Changed
|
||||
- Updated package dependencies. [#39004]
|
||||
|
||||
## [0.4.7] - 2024-05-06
|
||||
### Fixed
|
||||
- Correctly reference `Store_Product_List` class in `Plans::get_plans()`. [#37201]
|
||||
|
||||
## [0.4.6] - 2024-04-25
|
||||
### Changed
|
||||
- Update dependencies.
|
||||
|
||||
## [0.4.5] - 2024-04-22
|
||||
### Changed
|
||||
- Internal updates.
|
||||
|
||||
## [0.4.4] - 2024-04-08
|
||||
### Changed
|
||||
- Internal updates.
|
||||
|
||||
## [0.4.3] - 2024-03-12
|
||||
### Changed
|
||||
- Internal updates.
|
||||
|
||||
## [0.4.2] - 2024-02-12
|
||||
### Added
|
||||
- Plan features: add "sharing block" to the list of features supported in the free plan. [#35577]
|
||||
|
||||
## [0.4.1] - 2024-01-18
|
||||
### Added
|
||||
- Support the new creator plan in our plan checks [#35071]
|
||||
|
||||
## [0.4.0] - 2023-11-20
|
||||
### Changed
|
||||
- Updated required PHP version to >= 7.0. [#34192]
|
||||
|
||||
## [0.3.5] - 2023-10-24
|
||||
|
||||
- Updated package dependencies.
|
||||
|
||||
## [0.3.4] - 2023-08-23
|
||||
### Changed
|
||||
- Updated package dependencies. [#32605]
|
||||
|
||||
## [0.3.3] - 2023-06-19
|
||||
### Added
|
||||
- Add the Advanced SEO feature to the list of free features. [#31213]
|
||||
|
||||
## [0.3.2] - 2023-06-12
|
||||
### Changed
|
||||
- Remove Jetpack-the-plugin dependencies from Current Plan class. [#31207]
|
||||
|
||||
## [0.3.1] - 2023-06-05
|
||||
### Fixed
|
||||
- Revert gating removal for simple payments [#31067]
|
||||
|
||||
## [0.3.0] - 2023-05-11
|
||||
### Changed
|
||||
- Make Earn products free for all Jetpack plans [#30432]
|
||||
|
||||
## [0.2.12] - 2023-05-08
|
||||
### Changed
|
||||
- Make Premium Content accessible on Free plans. [#30398]
|
||||
|
||||
## [0.2.11] - 2023-04-10
|
||||
### Added
|
||||
- Add Jetpack Autoloader package suggestion. [#29988]
|
||||
|
||||
## [0.2.10] - 2023-02-20
|
||||
### Changed
|
||||
- Minor internal updates.
|
||||
|
||||
## [0.2.9] - 2023-01-25
|
||||
### Changed
|
||||
- Minor internal updates.
|
||||
|
||||
## [0.2.8] - 2022-12-02
|
||||
### Changed
|
||||
- Updated package dependencies. [#27688]
|
||||
|
||||
## [0.2.7] - 2022-11-22
|
||||
### Changed
|
||||
- Updated package dependencies. [#27043]
|
||||
|
||||
## [0.2.6] - 2022-11-07
|
||||
### Changed
|
||||
- Updated package dependencies. [#27278]
|
||||
|
||||
## [0.2.5] - 2022-10-25
|
||||
### Changed
|
||||
- Updated package dependencies. [#26705]
|
||||
|
||||
## [0.2.4] - 2022-09-20
|
||||
### Changed
|
||||
- Updated package dependencies.
|
||||
|
||||
## [0.2.3] - 2022-09-08
|
||||
### Changed
|
||||
- Updated package dependencies.
|
||||
|
||||
## [0.2.2] - 2022-08-30
|
||||
### Changed
|
||||
- Updated package dependencies. [#25694]
|
||||
|
||||
## [0.2.1] - 2022-08-23
|
||||
### Changed
|
||||
- Updated package dependencies. [#25628]
|
||||
|
||||
## [0.2.0] - 2022-08-16
|
||||
### Added
|
||||
- Tweaked the supports method of the plans package to refresh the plan data. [#25347]
|
||||
|
||||
## [0.1.3] - 2022-08-03
|
||||
### Changed
|
||||
- Updated package dependencies. [#25300, #25315]
|
||||
|
||||
## [0.1.2] - 2022-07-26
|
||||
### Changed
|
||||
- Add mirror repository information to package info. [#25142]
|
||||
- Updated package dependencies. [#25158]
|
||||
|
||||
## 0.1.1 - 2022-07-19
|
||||
### Changed
|
||||
- Updated package dependencies.
|
||||
|
||||
## 0.1.0 - 2022-07-06
|
||||
### Added
|
||||
- Add support for WordPress.com Starter plan. [#24496]
|
||||
- Package created. [#23503]
|
||||
|
||||
### Changed
|
||||
- Renaming master to trunk. [#24661]
|
||||
- Updated package dependencies.
|
||||
|
||||
### Deprecated
|
||||
- Moved the options class into Connection. [#24095]
|
||||
|
||||
[0.5.2]: https://github.com/Automattic/jetpack-plans/compare/v0.5.1...v0.5.2
|
||||
[0.5.1]: https://github.com/Automattic/jetpack-plans/compare/v0.5.0...v0.5.1
|
||||
[0.5.0]: https://github.com/Automattic/jetpack-plans/compare/v0.4.13...v0.5.0
|
||||
[0.4.13]: https://github.com/Automattic/jetpack-plans/compare/v0.4.12...v0.4.13
|
||||
[0.4.12]: https://github.com/Automattic/jetpack-plans/compare/v0.4.11...v0.4.12
|
||||
[0.4.11]: https://github.com/Automattic/jetpack-plans/compare/v0.4.10...v0.4.11
|
||||
[0.4.10]: https://github.com/Automattic/jetpack-plans/compare/v0.4.9...v0.4.10
|
||||
[0.4.9]: https://github.com/Automattic/jetpack-plans/compare/v0.4.8...v0.4.9
|
||||
[0.4.8]: https://github.com/Automattic/jetpack-plans/compare/v0.4.7...v0.4.8
|
||||
[0.4.7]: https://github.com/Automattic/jetpack-plans/compare/v0.4.6...v0.4.7
|
||||
[0.4.6]: https://github.com/Automattic/jetpack-plans/compare/v0.4.5...v0.4.6
|
||||
[0.4.5]: https://github.com/Automattic/jetpack-plans/compare/v0.4.4...v0.4.5
|
||||
[0.4.4]: https://github.com/Automattic/jetpack-plans/compare/v0.4.3...v0.4.4
|
||||
[0.4.3]: https://github.com/Automattic/jetpack-plans/compare/v0.4.2...v0.4.3
|
||||
[0.4.2]: https://github.com/Automattic/jetpack-plans/compare/v0.4.1...v0.4.2
|
||||
[0.4.1]: https://github.com/Automattic/jetpack-plans/compare/v0.4.0...v0.4.1
|
||||
[0.4.0]: https://github.com/Automattic/jetpack-plans/compare/v0.3.5...v0.4.0
|
||||
[0.3.5]: https://github.com/Automattic/jetpack-plans/compare/v0.3.4...v0.3.5
|
||||
[0.3.4]: https://github.com/Automattic/jetpack-plans/compare/v0.3.3...v0.3.4
|
||||
[0.3.3]: https://github.com/Automattic/jetpack-plans/compare/v0.3.2...v0.3.3
|
||||
[0.3.2]: https://github.com/Automattic/jetpack-plans/compare/v0.3.1...v0.3.2
|
||||
[0.3.1]: https://github.com/Automattic/jetpack-plans/compare/v0.3.0...v0.3.1
|
||||
[0.3.0]: https://github.com/Automattic/jetpack-plans/compare/v0.2.12...v0.3.0
|
||||
[0.2.12]: https://github.com/Automattic/jetpack-plans/compare/v0.2.11...v0.2.12
|
||||
[0.2.11]: https://github.com/Automattic/jetpack-plans/compare/v0.2.10...v0.2.11
|
||||
[0.2.10]: https://github.com/Automattic/jetpack-plans/compare/v0.2.9...v0.2.10
|
||||
[0.2.9]: https://github.com/Automattic/jetpack-plans/compare/v0.2.8...v0.2.9
|
||||
[0.2.8]: https://github.com/Automattic/jetpack-plans/compare/v0.2.7...v0.2.8
|
||||
[0.2.7]: https://github.com/Automattic/jetpack-plans/compare/v0.2.6...v0.2.7
|
||||
[0.2.6]: https://github.com/Automattic/jetpack-plans/compare/v0.2.5...v0.2.6
|
||||
[0.2.5]: https://github.com/Automattic/jetpack-plans/compare/v0.2.4...v0.2.5
|
||||
[0.2.4]: https://github.com/Automattic/jetpack-plans/compare/v0.2.3...v0.2.4
|
||||
[0.2.3]: https://github.com/Automattic/jetpack-plans/compare/v0.2.2...v0.2.3
|
||||
[0.2.2]: https://github.com/Automattic/jetpack-plans/compare/v0.2.1...v0.2.2
|
||||
[0.2.1]: https://github.com/Automattic/jetpack-plans/compare/v0.2.0...v0.2.1
|
||||
[0.2.0]: https://github.com/Automattic/jetpack-plans/compare/v0.1.3...v0.2.0
|
||||
[0.1.3]: https://github.com/Automattic/jetpack-plans/compare/v0.1.2...v0.1.3
|
||||
[0.1.2]: https://github.com/Automattic/jetpack-plans/compare/v0.1.1...v0.1.2
|
||||
@@ -0,0 +1,357 @@
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
===================================
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
@@ -0,0 +1,47 @@
|
||||
# Security Policy
|
||||
|
||||
Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/).
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure:
|
||||
|
||||
* [Jetpack](https://jetpack.com/)
|
||||
* Jetpack Backup
|
||||
* Jetpack Boost
|
||||
* Jetpack CRM
|
||||
* Jetpack Protect
|
||||
* Jetpack Search
|
||||
* Jetpack Social
|
||||
* Jetpack VideoPress
|
||||
|
||||
**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.**
|
||||
|
||||
Our most critical targets are:
|
||||
|
||||
* Jetpack and the Jetpack composer packages (all within this repo)
|
||||
* Jetpack.com -- the primary marketing site.
|
||||
* cloud.jetpack.com -- a management site.
|
||||
* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites.
|
||||
|
||||
For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic).
|
||||
|
||||
_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._
|
||||
|
||||
## Guidelines
|
||||
|
||||
We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines:
|
||||
|
||||
* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines).
|
||||
* Pen-testing Production:
|
||||
* Please **setup a local environment** instead whenever possible. Most of our code is open source (see above).
|
||||
* If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC.
|
||||
* **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels.
|
||||
* To be eligible for a bounty, all of these guidelines must be followed.
|
||||
* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability.
|
||||
|
||||
We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties.
|
||||
+436
@@ -0,0 +1,436 @@
|
||||
<?php
|
||||
/**
|
||||
* Handles fetching of the site's plan and products from WordPress.com and caching values locally.
|
||||
*
|
||||
* @package automattic/jetpack-plans
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack;
|
||||
|
||||
use Automattic\Jetpack\Connection\Client;
|
||||
use Automattic\Jetpack\Connection\Manager;
|
||||
|
||||
/**
|
||||
* Provides methods methods for fetching the site's plan and products from WordPress.com.
|
||||
*/
|
||||
class Current_Plan {
|
||||
/**
|
||||
* A cache variable to hold the active plan for the current request.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $active_plan_cache;
|
||||
|
||||
/**
|
||||
* Simple Site-specific features available.
|
||||
* Their calculation can be expensive and slow, so we're caching it for the request.
|
||||
*
|
||||
* @var array Site-specific features
|
||||
*/
|
||||
private static $simple_site_specific_features = array();
|
||||
|
||||
/**
|
||||
* The name of the option that will store the site's plan.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const PLAN_OPTION = 'jetpack_active_plan';
|
||||
|
||||
/**
|
||||
* The name of the option that will store the site's products.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const SITE_PRODUCTS_OPTION = 'jetpack_site_products';
|
||||
|
||||
const PLAN_DATA = array(
|
||||
'free' => array(
|
||||
'plans' => array(
|
||||
'jetpack_free',
|
||||
),
|
||||
'supports' => array(
|
||||
'advanced-seo',
|
||||
'opentable',
|
||||
'calendly',
|
||||
'send-a-message',
|
||||
'sharing-block',
|
||||
'whatsapp-button',
|
||||
'social-previews',
|
||||
'videopress',
|
||||
'videopress/video',
|
||||
'v6-video-frame-poster',
|
||||
|
||||
'core/video',
|
||||
'core/cover',
|
||||
'core/audio',
|
||||
),
|
||||
),
|
||||
'personal' => array(
|
||||
'plans' => array(
|
||||
'jetpack_personal',
|
||||
'jetpack_personal_monthly',
|
||||
'personal-bundle',
|
||||
'personal-bundle-monthly',
|
||||
'personal-bundle-2y',
|
||||
'personal-bundle-3y',
|
||||
'starter-plan',
|
||||
),
|
||||
'supports' => array(
|
||||
'akismet',
|
||||
'payments',
|
||||
'videopress',
|
||||
),
|
||||
),
|
||||
'premium' => array(
|
||||
'plans' => array(
|
||||
'jetpack_premium',
|
||||
'jetpack_premium_monthly',
|
||||
'value_bundle',
|
||||
'value_bundle-monthly',
|
||||
'value_bundle-2y',
|
||||
'value_bundle-3y',
|
||||
'jetpack_creator_yearly',
|
||||
'jetpack_creator_bi_yearly',
|
||||
'jetpack_creator_monthly',
|
||||
),
|
||||
'supports' => array(
|
||||
'simple-payments',
|
||||
'vaultpress',
|
||||
'videopress',
|
||||
'republicize',
|
||||
),
|
||||
),
|
||||
'security' => array(
|
||||
'plans' => array(
|
||||
'jetpack_security_daily',
|
||||
'jetpack_security_daily_monthly',
|
||||
'jetpack_security_realtime',
|
||||
'jetpack_security_realtime_monthly',
|
||||
'jetpack_security_t1_yearly',
|
||||
'jetpack_security_t1_monthly',
|
||||
'jetpack_security_t2_yearly',
|
||||
'jetpack_security_t2_monthly',
|
||||
),
|
||||
'supports' => array(),
|
||||
),
|
||||
'business' => array(
|
||||
'plans' => array(
|
||||
'jetpack_business',
|
||||
'jetpack_business_monthly',
|
||||
'business-bundle',
|
||||
'business-bundle-monthly',
|
||||
'business-bundle-2y',
|
||||
'business-bundle-3y',
|
||||
'ecommerce-bundle',
|
||||
'ecommerce-bundle-monthly',
|
||||
'ecommerce-bundle-2y',
|
||||
'ecommerce-bundle-3y',
|
||||
'pro-plan',
|
||||
'wp_bundle_migration_trial_monthly',
|
||||
'wp_bundle_hosting_trial_monthly',
|
||||
'ecommerce-trial-bundle-monthly',
|
||||
'wooexpress-small-bundle-yearly',
|
||||
'wooexpress-small-bundle-monthly',
|
||||
'wooexpress-medium-bundle-yearly',
|
||||
'wooexpress-medium-bundle-monthly',
|
||||
'wp_com_hundred_year_bundle_centennially',
|
||||
),
|
||||
'supports' => array(),
|
||||
),
|
||||
|
||||
'complete' => array(
|
||||
'plans' => array(
|
||||
'jetpack_complete',
|
||||
'jetpack_complete_monthly',
|
||||
'vip',
|
||||
),
|
||||
'supports' => array(),
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* Given a response to the `/sites/%d` endpoint, will parse the response and attempt to set the
|
||||
* site's plan and products from the response.
|
||||
*
|
||||
* @param array $response The response from `/sites/%d`.
|
||||
* @return bool Was the plan successfully updated?
|
||||
*/
|
||||
public static function update_from_sites_response( $response ) {
|
||||
// Bail if there was an error or malformed response.
|
||||
if ( is_wp_error( $response ) || ! is_array( $response ) || ! isset( $response['body'] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$body = wp_remote_retrieve_body( $response );
|
||||
if ( is_wp_error( $body ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Decode the results.
|
||||
$results = json_decode( $body, true );
|
||||
|
||||
if ( ! is_array( $results ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( isset( $results['products'] ) ) {
|
||||
// Store the site's products in an option and return true if updated.
|
||||
self::store_data_in_option( self::SITE_PRODUCTS_OPTION, $results['products'] );
|
||||
}
|
||||
|
||||
if ( ! isset( $results['plan'] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$current_plan = get_option( self::PLAN_OPTION, array() );
|
||||
|
||||
if ( ! empty( $current_plan ) && $current_plan === $results['plan'] ) {
|
||||
// Bail if the plans array hasn't changed.
|
||||
return false;
|
||||
}
|
||||
|
||||
// Store the new plan in an option and return true if updated.
|
||||
$result = self::store_data_in_option( self::PLAN_OPTION, $results['plan'] );
|
||||
|
||||
if ( $result ) {
|
||||
// Reset the cache since we've just updated the plan.
|
||||
self::$active_plan_cache = null;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store data in an option.
|
||||
*
|
||||
* @param string $option The name of the option that will store the data.
|
||||
* @param array $data Data to be store in an option.
|
||||
* @return bool Were the subscriptions successfully updated?
|
||||
*/
|
||||
private static function store_data_in_option( $option, $data ) {
|
||||
$result = update_option( $option, $data, true );
|
||||
|
||||
// If something goes wrong with the update, so delete the current option and then update it.
|
||||
if ( ! $result ) {
|
||||
delete_option( $option );
|
||||
$result = update_option( $option, $data, true );
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make an API call to WordPress.com for plan status
|
||||
*
|
||||
* @uses Jetpack_Options::get_option()
|
||||
* @uses Client::wpcom_json_api_request_as_blog()
|
||||
* @uses update_option()
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return bool True if plan is updated, false if no update
|
||||
*/
|
||||
public static function refresh_from_wpcom() {
|
||||
$site_id = Manager::get_site_id();
|
||||
if ( is_wp_error( $site_id ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Make the API request.
|
||||
|
||||
$response = Client::wpcom_json_api_request_as_blog(
|
||||
sprintf( '/sites/%d?force=wpcom', $site_id ),
|
||||
'1.1'
|
||||
);
|
||||
|
||||
return self::update_from_sites_response( $response );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the plan that this Jetpack site is currently using.
|
||||
*
|
||||
* @uses get_option()
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return array Active Jetpack plan details
|
||||
*/
|
||||
public static function get() {
|
||||
// this can be expensive to compute so we cache for the duration of a request.
|
||||
if ( is_array( self::$active_plan_cache ) && ! empty( self::$active_plan_cache ) ) {
|
||||
return self::$active_plan_cache;
|
||||
}
|
||||
|
||||
$plan = get_option( self::PLAN_OPTION, array() );
|
||||
|
||||
// Set the default options.
|
||||
$plan = wp_parse_args(
|
||||
$plan,
|
||||
array(
|
||||
'product_slug' => 'jetpack_free',
|
||||
'class' => 'free',
|
||||
'features' => array(
|
||||
'active' => array(),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
list( $plan['class'], $supports ) = self::get_class_and_features( $plan['product_slug'] );
|
||||
|
||||
$modules = new Modules();
|
||||
foreach ( $modules->get_available() as $module_slug ) {
|
||||
$module = $modules->get( $module_slug );
|
||||
if ( ! isset( $module ) || ! is_array( $module ) ) {
|
||||
continue;
|
||||
}
|
||||
if ( in_array( 'free', $module['plan_classes'], true ) || in_array( $plan['class'], $module['plan_classes'], true ) ) {
|
||||
$supports[] = $module_slug;
|
||||
}
|
||||
}
|
||||
|
||||
$plan['supports'] = $supports;
|
||||
|
||||
self::$active_plan_cache = $plan;
|
||||
|
||||
return $plan;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the site's products.
|
||||
*
|
||||
* @uses get_option()
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @return array Active Jetpack products
|
||||
*/
|
||||
public static function get_products() {
|
||||
return get_option( self::SITE_PRODUCTS_OPTION, array() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the class of plan and a list of features it supports
|
||||
*
|
||||
* @param string $plan_slug The plan that we're interested in.
|
||||
* @return array Two item array, the plan class and the an array of features.
|
||||
*/
|
||||
private static function get_class_and_features( $plan_slug ) {
|
||||
$features = array();
|
||||
foreach ( self::PLAN_DATA as $class => $details ) {
|
||||
$features = array_merge( $features, $details['supports'] );
|
||||
if ( in_array( $plan_slug, $details['plans'], true ) ) {
|
||||
return array( $class, $features );
|
||||
}
|
||||
}
|
||||
return array( 'free', self::PLAN_DATA['free']['supports'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the minimum plan slug that supports the given feature
|
||||
*
|
||||
* @param string $feature The name of the feature.
|
||||
* @return string|bool The slug for the minimum plan that supports.
|
||||
* the feature or false if not found
|
||||
*/
|
||||
public static function get_minimum_plan_for_feature( $feature ) {
|
||||
foreach ( self::PLAN_DATA as $details ) {
|
||||
if ( in_array( $feature, $details['supports'], true ) ) {
|
||||
return $details['plans'][0];
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the active plan supports a particular feature
|
||||
*
|
||||
* @uses self::get()
|
||||
*
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @param string $feature The module or feature to check.
|
||||
* @param bool $refresh_from_wpcom Refresh the local plan cache from wpcom.
|
||||
*
|
||||
* @return bool True if plan supports feature, false if not
|
||||
*/
|
||||
public static function supports( $feature, $refresh_from_wpcom = false ) {
|
||||
if ( $refresh_from_wpcom ) {
|
||||
self::refresh_from_wpcom();
|
||||
}
|
||||
|
||||
// Hijack the feature eligibility check on WordPress.com sites since they are gated differently.
|
||||
$should_wpcom_gate_feature = (
|
||||
function_exists( 'wpcom_site_has_feature' ) &&
|
||||
function_exists( 'wpcom_feature_exists' ) &&
|
||||
wpcom_feature_exists( $feature )
|
||||
);
|
||||
if ( $should_wpcom_gate_feature ) {
|
||||
return wpcom_site_has_feature( $feature );
|
||||
}
|
||||
|
||||
// Search product bypasses plan feature check.
|
||||
if ( 'search' === $feature && (bool) get_option( 'has_jetpack_search_product' ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// As of Q3 2021 - a videopress free tier is available to all plans.
|
||||
if ( 'videopress' === $feature ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// As of 05 2023 - all plans support Earn features (minus 'simple-payments').
|
||||
if ( in_array( $feature, array( 'donations', 'recurring-payments', 'premium-content/container' ), true ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$plan = self::get();
|
||||
|
||||
if (
|
||||
in_array( $feature, $plan['supports'], true )
|
||||
|| in_array( $feature, $plan['features']['active'], true )
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve site-specific features for Simple sites.
|
||||
*
|
||||
* See Jetpack_Gutenberg::get_site_specific_features()
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function get_simple_site_specific_features() {
|
||||
$is_simple_site = defined( 'IS_WPCOM' ) && constant( 'IS_WPCOM' );
|
||||
|
||||
if ( ! $is_simple_site ) {
|
||||
return array(
|
||||
'active' => array(),
|
||||
'available' => array(),
|
||||
);
|
||||
}
|
||||
|
||||
$current_blog_id = get_current_blog_id();
|
||||
|
||||
// Return the cached value if it exists.
|
||||
if ( isset( self::$simple_site_specific_features[ $current_blog_id ] ) ) {
|
||||
return self::$simple_site_specific_features[ $current_blog_id ];
|
||||
}
|
||||
|
||||
if ( ! class_exists( '\Store_Product_List' ) ) {
|
||||
require WP_CONTENT_DIR . '/admin-plugins/wpcom-billing/store-product-list.php';
|
||||
}
|
||||
|
||||
$simple_site_specific_features = \Store_Product_List::get_site_specific_features_data( $current_blog_id );
|
||||
|
||||
self::$simple_site_specific_features[ $current_blog_id ] = $simple_site_specific_features;
|
||||
|
||||
return $simple_site_specific_features;
|
||||
}
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* Plans Library
|
||||
*
|
||||
* Fetch plans data from WordPress.com.
|
||||
*
|
||||
* This file was copied and adapted from the Jetpack plugin on Mar 2022.
|
||||
*
|
||||
* @package automattic/jetpack-plans
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack;
|
||||
|
||||
use Store_Product_List;
|
||||
|
||||
/**
|
||||
* Fetch data about available Plans from WordPress.com
|
||||
*/
|
||||
class Plans {
|
||||
/**
|
||||
* Get a list of all available plans from WordPress.com
|
||||
*
|
||||
* @since-jetpack 7.7.0
|
||||
*
|
||||
* @return array The plans list
|
||||
*/
|
||||
public static function get_plans() {
|
||||
if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
|
||||
if ( ! class_exists( 'Store_Product_List' ) ) {
|
||||
require WP_CONTENT_DIR . '/admin-plugins/wpcom-billing/store-product-list.php';
|
||||
}
|
||||
|
||||
return Store_Product_List::api_only_get_active_plans_v1_4();
|
||||
}
|
||||
|
||||
// We're on Jetpack, so it's safe to use this namespace.
|
||||
$request = \Automattic\Jetpack\Connection\Client::wpcom_json_api_request_as_user(
|
||||
'/plans?_locale=' . get_user_locale(),
|
||||
// We're using version 1.5 of the endpoint rather than the default version 2
|
||||
// since the latter only returns Jetpack Plans, but we're also interested in
|
||||
// WordPress.com plans, for consumers of this method that run on WP.com.
|
||||
'1.5',
|
||||
array(
|
||||
'method' => 'GET',
|
||||
'headers' => array(
|
||||
'X-Forwarded-For' => ( new \Automattic\Jetpack\Status\Visitor() )->get_ip( true ),
|
||||
),
|
||||
),
|
||||
null,
|
||||
'rest'
|
||||
);
|
||||
|
||||
$body = wp_remote_retrieve_body( $request );
|
||||
if ( 200 === wp_remote_retrieve_response_code( $request ) ) {
|
||||
return json_decode( $body );
|
||||
} else {
|
||||
return $body;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get plan information for a plan given its slug
|
||||
*
|
||||
* @since-jetpack 7.7.0
|
||||
*
|
||||
* @param string $plan_slug Plan slug.
|
||||
*
|
||||
* @return object The plan object
|
||||
*/
|
||||
public static function get_plan( $plan_slug ) {
|
||||
$plans = self::get_plans();
|
||||
if ( ! is_array( $plans ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ( $plans as $plan ) {
|
||||
if ( $plan_slug === $plan->product_slug ) {
|
||||
return $plan;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-roles/src/class-roles.php';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-sync/src/class-functions.php';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php';
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php // Stub to avoid errors during upgrades
|
||||
require_once __DIR__ . '/../../../../jetpack_vendor/automattic/jetpack-sync/src/class-utils.php';
|
||||
@@ -0,0 +1,579 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see https://www.php-fig.org/psr/psr-0/
|
||||
* @see https://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
/** @var \Closure(string):void */
|
||||
private static $includeFile;
|
||||
|
||||
/** @var string|null */
|
||||
private $vendorDir;
|
||||
|
||||
// PSR-4
|
||||
/**
|
||||
* @var array<string, array<string, int>>
|
||||
*/
|
||||
private $prefixLengthsPsr4 = array();
|
||||
/**
|
||||
* @var array<string, list<string>>
|
||||
*/
|
||||
private $prefixDirsPsr4 = array();
|
||||
/**
|
||||
* @var list<string>
|
||||
*/
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
/**
|
||||
* List of PSR-0 prefixes
|
||||
*
|
||||
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
|
||||
*
|
||||
* @var array<string, array<string, list<string>>>
|
||||
*/
|
||||
private $prefixesPsr0 = array();
|
||||
/**
|
||||
* @var list<string>
|
||||
*/
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
/** @var bool */
|
||||
private $useIncludePath = false;
|
||||
|
||||
/**
|
||||
* @var array<string, string>
|
||||
*/
|
||||
private $classMap = array();
|
||||
|
||||
/** @var bool */
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
/**
|
||||
* @var array<string, bool>
|
||||
*/
|
||||
private $missingClasses = array();
|
||||
|
||||
/** @var string|null */
|
||||
private $apcuPrefix;
|
||||
|
||||
/**
|
||||
* @var array<string, self>
|
||||
*/
|
||||
private static $registeredLoaders = array();
|
||||
|
||||
/**
|
||||
* @param string|null $vendorDir
|
||||
*/
|
||||
public function __construct($vendorDir = null)
|
||||
{
|
||||
$this->vendorDir = $vendorDir;
|
||||
self::initializeIncludeClosure();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, list<string>>
|
||||
*/
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, list<string>>
|
||||
*/
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string> Array of classname => path
|
||||
*/
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, string> $classMap Class to filename map
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param list<string>|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
$paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
$paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
$paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
$paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param list<string>|string $paths The PSR-0 base directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||
*
|
||||
* @param string|null $apcuPrefix
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setApcuPrefix($apcuPrefix)
|
||||
{
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getApcuPrefix()
|
||||
{
|
||||
return $this->apcuPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
|
||||
if (null === $this->vendorDir) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($prepend) {
|
||||
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
|
||||
} else {
|
||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||
self::$registeredLoaders[$this->vendorDir] = $this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
|
||||
if (null !== $this->vendorDir) {
|
||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return true|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
$includeFile = self::$includeFile;
|
||||
$includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||
return false;
|
||||
}
|
||||
if (null !== $this->apcuPrefix) {
|
||||
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||
if ($hit) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if (false === $file && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if (null !== $this->apcuPrefix) {
|
||||
apcu_add($this->apcuPrefix.$class, $file);
|
||||
}
|
||||
|
||||
if (false === $file) {
|
||||
// Remember that this class does not exist.
|
||||
$this->missingClasses[$class] = true;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the currently registered loaders keyed by their corresponding vendor directories.
|
||||
*
|
||||
* @return array<string, self>
|
||||
*/
|
||||
public static function getRegisteredLoaders()
|
||||
{
|
||||
return self::$registeredLoaders;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $class
|
||||
* @param string $ext
|
||||
* @return string|false
|
||||
*/
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath . '\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
if (file_exists($file = $dir . $pathEnd)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
private static function initializeIncludeClosure()
|
||||
{
|
||||
if (self::$includeFile !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*
|
||||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
self::$includeFile = \Closure::bind(static function($file) {
|
||||
include $file;
|
||||
}, null, null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,359 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer;
|
||||
|
||||
use Composer\Autoload\ClassLoader;
|
||||
use Composer\Semver\VersionParser;
|
||||
|
||||
/**
|
||||
* This class is copied in every Composer installed project and available to all
|
||||
*
|
||||
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
||||
*
|
||||
* To require its presence, you can require `composer-runtime-api ^2.0`
|
||||
*
|
||||
* @final
|
||||
*/
|
||||
class InstalledVersions
|
||||
{
|
||||
/**
|
||||
* @var mixed[]|null
|
||||
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
||||
*/
|
||||
private static $installed;
|
||||
|
||||
/**
|
||||
* @var bool|null
|
||||
*/
|
||||
private static $canGetVendors;
|
||||
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
*/
|
||||
private static $installedByVendor = array();
|
||||
|
||||
/**
|
||||
* Returns a list of all package names which are present, either by being installed, replaced or provided
|
||||
*
|
||||
* @return string[]
|
||||
* @psalm-return list<string>
|
||||
*/
|
||||
public static function getInstalledPackages()
|
||||
{
|
||||
$packages = array();
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
$packages[] = array_keys($installed['versions']);
|
||||
}
|
||||
|
||||
if (1 === \count($packages)) {
|
||||
return $packages[0];
|
||||
}
|
||||
|
||||
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all package names with a specific type e.g. 'library'
|
||||
*
|
||||
* @param string $type
|
||||
* @return string[]
|
||||
* @psalm-return list<string>
|
||||
*/
|
||||
public static function getInstalledPackagesByType($type)
|
||||
{
|
||||
$packagesByType = array();
|
||||
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
foreach ($installed['versions'] as $name => $package) {
|
||||
if (isset($package['type']) && $package['type'] === $type) {
|
||||
$packagesByType[] = $name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $packagesByType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given package is installed
|
||||
*
|
||||
* This also returns true if the package name is provided or replaced by another package
|
||||
*
|
||||
* @param string $packageName
|
||||
* @param bool $includeDevRequirements
|
||||
* @return bool
|
||||
*/
|
||||
public static function isInstalled($packageName, $includeDevRequirements = true)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (isset($installed['versions'][$packageName])) {
|
||||
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given package satisfies a version constraint
|
||||
*
|
||||
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
|
||||
*
|
||||
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
|
||||
*
|
||||
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
|
||||
* @param string $packageName
|
||||
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
|
||||
* @return bool
|
||||
*/
|
||||
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||
{
|
||||
$constraint = $parser->parseConstraints((string) $constraint);
|
||||
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||
|
||||
return $provided->matches($constraint);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a version constraint representing all the range(s) which are installed for a given package
|
||||
*
|
||||
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
|
||||
* whether a given version of a package is installed, and not just whether it exists
|
||||
*
|
||||
* @param string $packageName
|
||||
* @return string Version constraint usable with composer/semver
|
||||
*/
|
||||
public static function getVersionRanges($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$ranges = array();
|
||||
if (isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
|
||||
}
|
||||
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
|
||||
}
|
||||
if (array_key_exists('provided', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
|
||||
}
|
||||
|
||||
return implode(' || ', $ranges);
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||
*/
|
||||
public static function getVersion($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['version'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||
*/
|
||||
public static function getPrettyVersion($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
|
||||
*/
|
||||
public static function getReference($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['reference'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['reference'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
|
||||
*/
|
||||
public static function getInstallPath($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
||||
*/
|
||||
public static function getRootPackage()
|
||||
{
|
||||
$installed = self::getInstalled();
|
||||
|
||||
return $installed[0]['root'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw installed.php data for custom implementations
|
||||
*
|
||||
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||
* @return array[]
|
||||
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
||||
*/
|
||||
public static function getRawData()
|
||||
{
|
||||
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
|
||||
|
||||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
self::$installed = include __DIR__ . '/installed.php';
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
return self::$installed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||
*
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
*/
|
||||
public static function getAllRawData()
|
||||
{
|
||||
return self::getInstalled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Lets you reload the static array from another file
|
||||
*
|
||||
* This is only useful for complex integrations in which a project needs to use
|
||||
* this class but then also needs to execute another project's autoloader in process,
|
||||
* and wants to ensure both projects have access to their version of installed.php.
|
||||
*
|
||||
* A typical case would be PHPUnit, where it would need to make sure it reads all
|
||||
* the data it needs from this class, then call reload() with
|
||||
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
|
||||
* the project in which it runs can then also use this class safely, without
|
||||
* interference between PHPUnit's dependencies and the project's dependencies.
|
||||
*
|
||||
* @param array[] $data A vendor/composer/installed.php data set
|
||||
* @return void
|
||||
*
|
||||
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
||||
*/
|
||||
public static function reload($data)
|
||||
{
|
||||
self::$installed = $data;
|
||||
self::$installedByVendor = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
*/
|
||||
private static function getInstalled()
|
||||
{
|
||||
if (null === self::$canGetVendors) {
|
||||
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
||||
}
|
||||
|
||||
$installed = array();
|
||||
|
||||
if (self::$canGetVendors) {
|
||||
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
||||
if (isset(self::$installedByVendor[$vendorDir])) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir];
|
||||
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require $vendorDir.'/composer/installed.php';
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = $required;
|
||||
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
||||
self::$installed = $installed[count($installed) - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require __DIR__ . '/installed.php';
|
||||
self::$installed = $required;
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
if (self::$installed !== array()) {
|
||||
$installed[] = self::$installed;
|
||||
}
|
||||
|
||||
return $installed;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
@@ -0,0 +1,487 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'AhoCorasick\\MultiStringMatcher' => $vendorDir . '/wikimedia/aho-corasick/src/MultiStringMatcher.php',
|
||||
'AhoCorasick\\MultiStringReplacer' => $vendorDir . '/wikimedia/aho-corasick/src/MultiStringReplacer.php',
|
||||
'Automattic\\Jetpack\\A8c_Mc_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php',
|
||||
'Automattic\\Jetpack\\Admin_UI\\Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Assets' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php',
|
||||
'Automattic\\Jetpack\\Assets\\Logo' => $baseDir . '/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php',
|
||||
'Automattic\\Jetpack\\Assets\\Script_Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-script-data.php',
|
||||
'Automattic\\Jetpack\\Assets\\Semver' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => $vendorDir . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => $vendorDir . '/automattic/jetpack-autoloader/src/ManifestGenerator.php',
|
||||
'Automattic\\Jetpack\\Automatic_Install_Skin' => $baseDir . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php',
|
||||
'Automattic\\Jetpack\\Backup\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0001\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/src/class-package-version-compat.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager_Impl' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager-impl.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Initial_State' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/src/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Jetpack_Backup' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/src/class-jetpack-backup.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Jetpack_Backup_Upgrades' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/src/class-jetpack-backup-upgrades.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Throw_On_Errors' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-throw-on-errors.php',
|
||||
'Automattic\\Jetpack\\Blaze' => $baseDir . '/jetpack_vendor/automattic/jetpack-blaze/src/class-blaze.php',
|
||||
'Automattic\\Jetpack\\Blaze\\Dashboard' => $baseDir . '/jetpack_vendor/automattic/jetpack-blaze/src/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Blaze\\Dashboard_Config_Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-blaze/src/class-dashboard-config-data.php',
|
||||
'Automattic\\Jetpack\\Blaze\\Dashboard_REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-blaze/src/class-dashboard-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Blaze\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-blaze/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Blocks' => $baseDir . '/jetpack_vendor/automattic/jetpack-blocks/src/class-blocks.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Contracts\\Boost_API_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/contracts/boost-api-client.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Boost_API' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-boost-api.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Cacheable' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-cacheable.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Transient' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-transient.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Url' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-url.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-utils.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\WPCOM_Boost_API_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-wpcom-boost-api-client.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Jetpack_Boost_Modules' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-jetpack-boost-modules.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Graph_History_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-graph-history-request.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_History' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-history.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-request.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Featured_Content' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/class-featured-content.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Portfolio' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-portfolio.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Testimonial' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-testimonial.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Testimonial_Textarea_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-testimonial-textarea-control.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Testimonial_Title_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-testimonial-title-control.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Main' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Nova_Restaurant' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-nova-restaurant.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/class-social-links.php',
|
||||
'Automattic\\Jetpack\\Composer\\Manager' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-manager.php',
|
||||
'Automattic\\Jetpack\\Composer\\Plugin' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-plugin.php',
|
||||
'Automattic\\Jetpack\\Config' => $baseDir . '/jetpack_vendor/automattic/jetpack-config/src/class-config.php',
|
||||
'Automattic\\Jetpack\\Connection\\Authorize_Json_Api' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-authorize-json-api.php',
|
||||
'Automattic\\Jetpack\\Connection\\Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-client.php',
|
||||
'Automattic\\Jetpack\\Connection\\Connection_Assets' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-assets.php',
|
||||
'Automattic\\Jetpack\\Connection\\Connection_Notice' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-notice.php',
|
||||
'Automattic\\Jetpack\\Connection\\Error_Handler' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php',
|
||||
'Automattic\\Jetpack\\Connection\\Initial_State' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\Connection\\Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php',
|
||||
'Automattic\\Jetpack\\Connection\\Manager_Interface' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php',
|
||||
'Automattic\\Jetpack\\Connection\\Nonce_Handler' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php',
|
||||
'Automattic\\Jetpack\\Connection\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Connection\\Package_Version_Tracker' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php',
|
||||
'Automattic\\Jetpack\\Connection\\Plugin' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php',
|
||||
'Automattic\\Jetpack\\Connection\\Plugin_Storage' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php',
|
||||
'Automattic\\Jetpack\\Connection\\REST_Connector' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php',
|
||||
'Automattic\\Jetpack\\Connection\\Rest_Authentication' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\Force_2FA' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-force-2fa.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\Helpers' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\Notices' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\User_Admin' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php',
|
||||
'Automattic\\Jetpack\\Connection\\Secrets' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php',
|
||||
'Automattic\\Jetpack\\Connection\\Server_Sandbox' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php',
|
||||
'Automattic\\Jetpack\\Connection\\Tokens' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php',
|
||||
'Automattic\\Jetpack\\Connection\\Tokens_Locks' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php',
|
||||
'Automattic\\Jetpack\\Connection\\Traits\\WPCOM_REST_API_Proxy_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php',
|
||||
'Automattic\\Jetpack\\Connection\\Urls' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php',
|
||||
'Automattic\\Jetpack\\Connection\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\Connection\\Webhooks' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php',
|
||||
'Automattic\\Jetpack\\Connection\\Webhooks\\Authorize_Redirect' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php',
|
||||
'Automattic\\Jetpack\\Connection\\XMLRPC_Async_Call' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php',
|
||||
'Automattic\\Jetpack\\Connection\\XMLRPC_Connector' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php',
|
||||
'Automattic\\Jetpack\\Constants' => $baseDir . '/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php',
|
||||
'Automattic\\Jetpack\\CookieState' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-cookiestate.php',
|
||||
'Automattic\\Jetpack\\Current_Plan' => $vendorDir . '/automattic/jetpack-plans/src/class-current-plan.php',
|
||||
'Automattic\\Jetpack\\Device_Detection' => $baseDir . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php',
|
||||
'Automattic\\Jetpack\\Device_Detection\\User_Agent_Info' => $baseDir . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php',
|
||||
'Automattic\\Jetpack\\Error' => $baseDir . '/jetpack_vendor/automattic/jetpack-error/src/class-error.php',
|
||||
'Automattic\\Jetpack\\Errors' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-errors.php',
|
||||
'Automattic\\Jetpack\\ExPlat' => $baseDir . '/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php',
|
||||
'Automattic\\Jetpack\\ExPlat\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-explat/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Extensions\\Contact_Form\\Contact_Form_Block' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/blocks/contact-form/class-contact-form-block.php',
|
||||
'Automattic\\Jetpack\\Files' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-files.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Admin' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-admin.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Endpoint' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-endpoint.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Field' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-field.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Plugin' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-plugin.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Shortcode' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-shortcode.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Editor_View' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-editor-view.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Form_View' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-form-view.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Util' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-util.php',
|
||||
'Automattic\\Jetpack\\Forms\\Dashboard\\Dashboard' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/dashboard/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Forms\\Dashboard\\Dashboard_View_Switch' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/dashboard/class-dashboard-view-switch.php',
|
||||
'Automattic\\Jetpack\\Forms\\Jetpack_Forms' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/class-jetpack-forms.php',
|
||||
'Automattic\\Jetpack\\Forms\\Service\\Google_Drive' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/service/class-google-drive.php',
|
||||
'Automattic\\Jetpack\\Forms\\Service\\Post_To_Url' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/service/class-post-to-url.php',
|
||||
'Automattic\\Jetpack\\Forms\\WPCOM_REST_API_V2_Endpoint_Forms' => $baseDir . '/jetpack_vendor/automattic/jetpack-forms/src/class-wpcom-rest-api-v2-endpoint-forms.php',
|
||||
'Automattic\\Jetpack\\Heartbeat' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php',
|
||||
'Automattic\\Jetpack\\IP\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\REST_Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\UI' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\URL_Secret' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php',
|
||||
'Automattic\\Jetpack\\Identity_Crisis' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-identity-crisis.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN' => $baseDir . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Core' => $baseDir . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-core.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Image' => $baseDir . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-image.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Image_Sizes' => $baseDir . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-image-sizes.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Setup' => $baseDir . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-setup.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Attachment' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-attachment.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Block' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-block.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Category' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-category.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Comment' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-comment.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Custom_CSS' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-custom-css.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\End' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-end.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Global_Style' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-global-style.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Import' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/trait-import.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Import_ID' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/trait-import-id.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-menu.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Menu_Item' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-menu-item.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Navigation' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-navigation.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Page' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-page.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Post' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-post.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Start' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-start.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Tag' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-tag.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Template' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-template.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Template_Part' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-template-part.php',
|
||||
'Automattic\\Jetpack\\Import\\Main' => $baseDir . '/jetpack_vendor/automattic/jetpack-import/src/class-main.php',
|
||||
'Automattic\\Jetpack\\JITMS\\JITM' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php',
|
||||
'Automattic\\Jetpack\\JITMS\\Post_Connection_JITM' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php',
|
||||
'Automattic\\Jetpack\\JITMS\\Pre_Connection_JITM' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php',
|
||||
'Automattic\\Jetpack\\JITMS\\Rest_Api_Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php',
|
||||
'Automattic\\Jetpack\\Jetpack_CRM_Data' => $baseDir . '/src/class-jetpack-crm-data.php',
|
||||
'Automattic\\Jetpack\\Licensing' => $baseDir . '/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php',
|
||||
'Automattic\\Jetpack\\Licensing\\Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Admin_Color_Schemes' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-color-schemes/class-admin-color-schemes.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Atomic_Additional_CSS_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-atomic-additional-css-manager.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Atomic_Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-atomic-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Base_Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-base-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\CSS_Customizer_Nudge' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-css-customizer-nudge.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\CSS_Nudge_Customize_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-css-nudge-customize-control.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Dashboard_Switcher_Tracking' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-dashboard-switcher-tracking.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Domain_Only_Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-domain-only-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Inline_Help' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/inline-help/class-inline-help.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Jetpack_Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-jetpack-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Main' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\P2_Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-p2-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Posts_List_Page_Notification' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/wp-posts-list/class-posts-list-page-notification.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPCOM_Additional_CSS_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-wpcom-additional-css-manager.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPCOM_Email_Subscription_Checker' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-wpcom-email-subscription-checker.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPCOM_User_Profile_Fields_Revert' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/profile-edit/class-wpcom-user-profile-fields-revert.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPcom_Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-wpcom-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Modules' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-modules.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Activitylog' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Hybrid_Product' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Initializer' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Jetpack_Manage' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Module_Product' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Product' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Anti_Spam' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Backup' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Boost' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Complete' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Creator' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Crm' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Extras' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Growth' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Jetpack_Ai' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Newsletter' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Protect' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Related_Posts' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Scan' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Search' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Search_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Security' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Site_Accelerator' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Social' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Starter' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Videopress' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_AI' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Product_Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-product-data.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Products' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Purchases' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Recommendations_Evaluation' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Zendesk_Chat' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Wpcom_Products' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php',
|
||||
'Automattic\\Jetpack\\Partner' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php',
|
||||
'Automattic\\Jetpack\\Partner_Coupon' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner-coupon.php',
|
||||
'Automattic\\Jetpack\\Password_Checker' => $baseDir . '/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php',
|
||||
'Automattic\\Jetpack\\Paths' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-paths.php',
|
||||
'Automattic\\Jetpack\\Plans' => $vendorDir . '/automattic/jetpack-plans/src/class-plans.php',
|
||||
'Automattic\\Jetpack\\Plugin\\Deprecate' => $baseDir . '/src/class-deprecate.php',
|
||||
'Automattic\\Jetpack\\Plugin\\Tracking' => $baseDir . '/src/class-tracking.php',
|
||||
'Automattic\\Jetpack\\Plugins_Installer' => $baseDir . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php',
|
||||
'Automattic\\Jetpack\\Post_List\\Post_List' => $baseDir . '/jetpack_vendor/automattic/jetpack-post-list/src/class-post-list.php',
|
||||
'Automattic\\Jetpack\\Post_List\\Post_Thumbnail' => $baseDir . '/jetpack_vendor/automattic/jetpack-post-list/src/class-post-thumbnail.php',
|
||||
'Automattic\\Jetpack\\Protect_Models' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\Extension_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\History_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\Status_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-status-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\Threat_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Plan' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Protect_Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Scan_Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Connections' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-connections.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Jetpack_Social_Settings\\Dismissed_Notices' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/jetpack-social-settings/class-dismissed-notices.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Jetpack_Social_Settings\\Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/jetpack-social-settings/class-settings.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Keyring_Helper' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-keyring-helper.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Assets' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-assets.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Base' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-base.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Script_Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-script-data.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Setup' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-setup.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_UI' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-ui.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-utils.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Base_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-base-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Connections_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-connections-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Connections_Post_Field' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-connections-post-field.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Proxy_Requests' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-proxy-requests.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Services' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-services.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Share_Limits' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-share-limits.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Admin_Page' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/class-social-admin-page.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Post_Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-post-settings.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\REST_Settings_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-rest-settings-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\REST_Token_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-rest-token-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-settings.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Setup' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-setup.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Templates' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-templates.php',
|
||||
'Automattic\\Jetpack\\Redirect' => $baseDir . '/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php',
|
||||
'Automattic\\Jetpack\\Roles' => $baseDir . '/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php',
|
||||
'Automattic\\Jetpack\\Search\\CLI' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-cli.php',
|
||||
'Automattic\\Jetpack\\Search\\Classic_Search' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/classic-search/class-classic-search.php',
|
||||
'Automattic\\Jetpack\\Search\\Customberg' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/customberg/class-customberg.php',
|
||||
'Automattic\\Jetpack\\Search\\Customizer' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/customizer/class-customizer.php',
|
||||
'Automattic\\Jetpack\\Search\\Dashboard' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/dashboard/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Search\\Excluded_Post_Types_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/customizer/customize-controls/class-excluded-post-types-control.php',
|
||||
'Automattic\\Jetpack\\Search\\Helper' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-helper.php',
|
||||
'Automattic\\Jetpack\\Search\\Initial_State' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/dashboard/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\Search\\Initializer' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/initializers/class-initializer.php',
|
||||
'Automattic\\Jetpack\\Search\\Instant_Search' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/instant-search/class-instant-search.php',
|
||||
'Automattic\\Jetpack\\Search\\Label_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/customizer/customize-controls/class-label-control.php',
|
||||
'Automattic\\Jetpack\\Search\\Module_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-module-control.php',
|
||||
'Automattic\\Jetpack\\Search\\Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-options.php',
|
||||
'Automattic\\Jetpack\\Search\\Package' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-package.php',
|
||||
'Automattic\\Jetpack\\Search\\Plan' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-plan.php',
|
||||
'Automattic\\Jetpack\\Search\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Search\\Search_Widget' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/widgets/class-search-widget.php',
|
||||
'Automattic\\Jetpack\\Search\\Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-settings.php',
|
||||
'Automattic\\Jetpack\\Search\\Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-stats.php',
|
||||
'Automattic\\Jetpack\\Search\\Template_Tags' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/class-template-tags.php',
|
||||
'Automattic\\Jetpack\\Search\\WPES\\Query_Builder' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/wpes/class-query-builder.php',
|
||||
'Automattic\\Jetpack\\Search\\WPES\\Query_Parser' => $baseDir . '/jetpack_vendor/automattic/jetpack-search/src/wpes/class-query-parser.php',
|
||||
'Automattic\\Jetpack\\Stats\\Main' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Stats\\Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats/src/class-options.php',
|
||||
'Automattic\\Jetpack\\Stats\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Stats\\REST_Provider' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats/src/class-rest-provider.php',
|
||||
'Automattic\\Jetpack\\Stats\\Tracking_Pixel' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats/src/class-tracking-pixel.php',
|
||||
'Automattic\\Jetpack\\Stats\\WPCOM_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats/src/class-wpcom-stats.php',
|
||||
'Automattic\\Jetpack\\Stats\\XMLRPC_Provider' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats/src/class-xmlrpc-provider.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Dashboard' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Main' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Notices' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-notices.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Odyssey_Assets' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-odyssey-assets.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Odyssey_Config_Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-odyssey-config-data.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\WPCOM_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-wpcom-client.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\WP_Dashboard_Odyssey_Widget' => $baseDir . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-wp-dashboard-odyssey-widget.php',
|
||||
'Automattic\\Jetpack\\Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-status.php',
|
||||
'Automattic\\Jetpack\\Status\\Cache' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-cache.php',
|
||||
'Automattic\\Jetpack\\Status\\Host' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-host.php',
|
||||
'Automattic\\Jetpack\\Status\\Visitor' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php',
|
||||
'Automattic\\Jetpack\\Sync\\Actions' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php',
|
||||
'Automattic\\Jetpack\\Sync\\Codec_Interface' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php',
|
||||
'Automattic\\Jetpack\\Sync\\Data_Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php',
|
||||
'Automattic\\Jetpack\\Sync\\Dedicated_Sender' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php',
|
||||
'Automattic\\Jetpack\\Sync\\Default_Filter_Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php',
|
||||
'Automattic\\Jetpack\\Sync\\Defaults' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php',
|
||||
'Automattic\\Jetpack\\Sync\\Functions' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php',
|
||||
'Automattic\\Jetpack\\Sync\\Health' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-health.php',
|
||||
'Automattic\\Jetpack\\Sync\\JSON_Deflate_Array_Codec' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php',
|
||||
'Automattic\\Jetpack\\Sync\\Listener' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php',
|
||||
'Automattic\\Jetpack\\Sync\\Lock' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php',
|
||||
'Automattic\\Jetpack\\Sync\\Main' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Attachments' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-attachments.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Callables' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Comments' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Constants' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync_Immediately' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Import' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Menus' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Meta' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Module' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Network_Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Plugins' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Posts' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Protect' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Search' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Term_Relationships' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-term-relationships.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Terms' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Themes' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Updates' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Users' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\WP_Super_Cache' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce_HPOS_Orders' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php',
|
||||
'Automattic\\Jetpack\\Sync\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Table' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue_Buffer' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php',
|
||||
'Automattic\\Jetpack\\Sync\\REST_Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php',
|
||||
'Automattic\\Jetpack\\Sync\\REST_Sender' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Usermeta' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Users' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore_Interface' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/interface-replicastore.php',
|
||||
'Automattic\\Jetpack\\Sync\\Sender' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php',
|
||||
'Automattic\\Jetpack\\Sync\\Server' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-server.php',
|
||||
'Automattic\\Jetpack\\Sync\\Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php',
|
||||
'Automattic\\Jetpack\\Sync\\Simple_Codec' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php',
|
||||
'Automattic\\Jetpack\\Sync\\Users' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-users.php',
|
||||
'Automattic\\Jetpack\\Sync\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\Terms_Of_Service' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php',
|
||||
'Automattic\\Jetpack\\Tracking' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\AJAX' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-ajax.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Access_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-access-control.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Admin_UI' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-admin-ui.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Attachment_Handler' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-attachment-handler.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Block_Editor_Content' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-block-editor-content.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Block_Editor_Extensions' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-block-editor-extensions.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-data.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Divi' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-divi.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Initializer' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-initializer.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Jwt_Token_Bridge' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-jwt-token-bridge.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Module_Control' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-module-control.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-options.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Plan' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-plan.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Site' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-site.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-stats.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-status.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Upload_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-upload-exception.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Uploader' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-uploader.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Uploader_Rest_Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-uploader-rest-endpoints.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPressToken' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopresstoken.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPress_Rest_Api_V1_Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopress-rest-api-v1-settings.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPress_Rest_Api_V1_Site' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopress-rest-api-v1-site.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPress_Rest_Api_V1_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopress-rest-api-v1-stats.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\WPCOM_REST_API_V2_Attachment_VideoPress_Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-wpcom-rest-api-v2-attachment-videopress-data.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\WPCOM_REST_API_V2_Attachment_VideoPress_Field' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-wpcom-rest-api-v2-attachment-field-videopress.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\WPCOM_REST_API_V2_Endpoint_VideoPress' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-wpcom-rest-api-v2-endpoint-videopress.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\XMLRPC' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/class-xmlrpc.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Blocked_Login_Page' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Math_Authenticate' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-math-fallback.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Shared_Functions' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-shared-functions.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Transient_Cleanup' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php',
|
||||
'Automattic\\Jetpack\\Waf\\CLI' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php',
|
||||
'Automattic\\Jetpack\\Waf\\File_System_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php',
|
||||
'Automattic\\Jetpack\\Waf\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Waf\\Rules_API_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-rules-api-exception.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Blocklog_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Compatibility' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Constants' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-waf-exception.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Initializer' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Operators' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Rules_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Runner' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runner.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Runtime' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runtime.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Standalone_Bootstrap' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Transforms' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Dashboard' => $baseDir . '/jetpack_vendor/automattic/jetpack-wordads/src/dashboard/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Helper' => $baseDir . '/jetpack_vendor/automattic/jetpack-wordads/src/class-helper.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Initial_State' => $baseDir . '/jetpack_vendor/automattic/jetpack-wordads/src/dashboard/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Initializer' => $baseDir . '/jetpack_vendor/automattic/jetpack-wordads/src/initializers/class-initializer.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Package' => $baseDir . '/jetpack_vendor/automattic/jetpack-wordads/src/class-package.php',
|
||||
'Automattic\\Jetpack\\WordAds\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-wordads/src/class-rest-controller.php',
|
||||
'Automattic\\Woocommerce_Analytics' => $baseDir . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-woocommerce-analytics.php',
|
||||
'Automattic\\Woocommerce_Analytics\\My_Account' => $baseDir . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-my-account.php',
|
||||
'Automattic\\Woocommerce_Analytics\\Universal' => $baseDir . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-universal.php',
|
||||
'Automattic\\Woocommerce_Analytics\\Woo_Analytics_Trait' => $baseDir . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-woo-analytics-trait.php',
|
||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||
'Jetpack_Customize_Control_Title' => $baseDir . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/content-options/customizer.php',
|
||||
'Jetpack_IXR_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php',
|
||||
'Jetpack_IXR_ClientMulticall' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php',
|
||||
'Jetpack_Modules_Overrides' => $baseDir . '/src/class-jetpack-modules-overrides.php',
|
||||
'Jetpack_Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php',
|
||||
'Jetpack_Signature' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php',
|
||||
'Jetpack_Tracks_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php',
|
||||
'Jetpack_Tracks_Event' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php',
|
||||
'Jetpack_XMLRPC_Server' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php',
|
||||
'ScssPhp\\ScssPhp\\Base\\Range' => $vendorDir . '/scssphp/scssphp/src/Base/Range.php',
|
||||
'ScssPhp\\ScssPhp\\Block' => $vendorDir . '/scssphp/scssphp/src/Block.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\AtRootBlock' => $vendorDir . '/scssphp/scssphp/src/Block/AtRootBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\CallableBlock' => $vendorDir . '/scssphp/scssphp/src/Block/CallableBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ContentBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ContentBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\DirectiveBlock' => $vendorDir . '/scssphp/scssphp/src/Block/DirectiveBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\EachBlock' => $vendorDir . '/scssphp/scssphp/src/Block/EachBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ElseBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ElseBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ElseifBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ElseifBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ForBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ForBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\IfBlock' => $vendorDir . '/scssphp/scssphp/src/Block/IfBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\MediaBlock' => $vendorDir . '/scssphp/scssphp/src/Block/MediaBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\NestedPropertyBlock' => $vendorDir . '/scssphp/scssphp/src/Block/NestedPropertyBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\WhileBlock' => $vendorDir . '/scssphp/scssphp/src/Block/WhileBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Cache' => $vendorDir . '/scssphp/scssphp/src/Cache.php',
|
||||
'ScssPhp\\ScssPhp\\Colors' => $vendorDir . '/scssphp/scssphp/src/Colors.php',
|
||||
'ScssPhp\\ScssPhp\\CompilationResult' => $vendorDir . '/scssphp/scssphp/src/CompilationResult.php',
|
||||
'ScssPhp\\ScssPhp\\Compiler' => $vendorDir . '/scssphp/scssphp/src/Compiler.php',
|
||||
'ScssPhp\\ScssPhp\\Compiler\\CachedResult' => $vendorDir . '/scssphp/scssphp/src/Compiler/CachedResult.php',
|
||||
'ScssPhp\\ScssPhp\\Compiler\\Environment' => $vendorDir . '/scssphp/scssphp/src/Compiler/Environment.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\CompilerException' => $vendorDir . '/scssphp/scssphp/src/Exception/CompilerException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\ParserException' => $vendorDir . '/scssphp/scssphp/src/Exception/ParserException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\RangeException' => $vendorDir . '/scssphp/scssphp/src/Exception/RangeException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\SassException' => $vendorDir . '/scssphp/scssphp/src/Exception/SassException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\SassScriptException' => $vendorDir . '/scssphp/scssphp/src/Exception/SassScriptException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\ServerException' => $vendorDir . '/scssphp/scssphp/src/Exception/ServerException.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter' => $vendorDir . '/scssphp/scssphp/src/Formatter.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Compact' => $vendorDir . '/scssphp/scssphp/src/Formatter/Compact.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Compressed' => $vendorDir . '/scssphp/scssphp/src/Formatter/Compressed.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Crunched' => $vendorDir . '/scssphp/scssphp/src/Formatter/Crunched.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Debug' => $vendorDir . '/scssphp/scssphp/src/Formatter/Debug.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Expanded' => $vendorDir . '/scssphp/scssphp/src/Formatter/Expanded.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Nested' => $vendorDir . '/scssphp/scssphp/src/Formatter/Nested.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\OutputBlock' => $vendorDir . '/scssphp/scssphp/src/Formatter/OutputBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Logger\\LoggerInterface' => $vendorDir . '/scssphp/scssphp/src/Logger/LoggerInterface.php',
|
||||
'ScssPhp\\ScssPhp\\Logger\\QuietLogger' => $vendorDir . '/scssphp/scssphp/src/Logger/QuietLogger.php',
|
||||
'ScssPhp\\ScssPhp\\Logger\\StreamLogger' => $vendorDir . '/scssphp/scssphp/src/Logger/StreamLogger.php',
|
||||
'ScssPhp\\ScssPhp\\Node' => $vendorDir . '/scssphp/scssphp/src/Node.php',
|
||||
'ScssPhp\\ScssPhp\\Node\\Number' => $vendorDir . '/scssphp/scssphp/src/Node/Number.php',
|
||||
'ScssPhp\\ScssPhp\\OutputStyle' => $vendorDir . '/scssphp/scssphp/src/OutputStyle.php',
|
||||
'ScssPhp\\ScssPhp\\Parser' => $vendorDir . '/scssphp/scssphp/src/Parser.php',
|
||||
'ScssPhp\\ScssPhp\\SourceMap\\Base64' => $vendorDir . '/scssphp/scssphp/src/SourceMap/Base64.php',
|
||||
'ScssPhp\\ScssPhp\\SourceMap\\Base64VLQ' => $vendorDir . '/scssphp/scssphp/src/SourceMap/Base64VLQ.php',
|
||||
'ScssPhp\\ScssPhp\\SourceMap\\SourceMapGenerator' => $vendorDir . '/scssphp/scssphp/src/SourceMap/SourceMapGenerator.php',
|
||||
'ScssPhp\\ScssPhp\\Type' => $vendorDir . '/scssphp/scssphp/src/Type.php',
|
||||
'ScssPhp\\ScssPhp\\Util' => $vendorDir . '/scssphp/scssphp/src/Util.php',
|
||||
'ScssPhp\\ScssPhp\\Util\\Path' => $vendorDir . '/scssphp/scssphp/src/Util/Path.php',
|
||||
'ScssPhp\\ScssPhp\\ValueConverter' => $vendorDir . '/scssphp/scssphp/src/ValueConverter.php',
|
||||
'ScssPhp\\ScssPhp\\Version' => $vendorDir . '/scssphp/scssphp/src/Version.php',
|
||||
'ScssPhp\\ScssPhp\\Warn' => $vendorDir . '/scssphp/scssphp/src/Warn.php',
|
||||
'VIDEOPRESS_PRIVACY' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/utility-functions.php',
|
||||
'VideoPressUploader\\File_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-file-exception.php',
|
||||
'VideoPressUploader\\Transient_Store' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-transient-store.php',
|
||||
'VideoPressUploader\\Tus_Abstract_Cache' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-abstract-cache.php',
|
||||
'VideoPressUploader\\Tus_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-client.php',
|
||||
'VideoPressUploader\\Tus_Date_Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-date-utils.php',
|
||||
'VideoPressUploader\\Tus_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-exception.php',
|
||||
'VideoPressUploader\\Tus_File' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-file.php',
|
||||
'VideoPress_Divi_Extension' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/videopress-divi/class-videopress-divi-extension.php',
|
||||
'VideoPress_Divi_Module' => $baseDir . '/jetpack_vendor/automattic/jetpack-videopress/src/videopress-divi/class-videopress-divi-module.php',
|
||||
);
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'3773ef3f09c37da5478d578e32b03a4b' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/actions.php',
|
||||
'7372b7fb88a9723cf5b76d456eb0b738' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/actions.php',
|
||||
'd4eb94df91a729802d18373ee8cdc79f' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/actions.php',
|
||||
'd9927a8ddcd8b3a40fb28c24213827ff' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/actions.php',
|
||||
'e6f7f640a6586216432b53e5c9d1b472' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/utilities.php',
|
||||
'3d45c7e6a7f0e71849e33afe4b3b3ede' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/cli.php',
|
||||
);
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
);
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'),
|
||||
'Automattic\\Jetpack\\Autoloader\\' => array($vendorDir . '/automattic/jetpack-autoloader/src'),
|
||||
);
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
require __DIR__ . '/platform_check.php';
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3::getInitializer($loader));
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
|
||||
$filesToLoad = \Composer\Autoload\ComposerStaticInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3::$files;
|
||||
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
||||
require $file;
|
||||
}
|
||||
}, null, null);
|
||||
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||
$requireFile($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,530 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3
|
||||
{
|
||||
public static $files = array (
|
||||
'3773ef3f09c37da5478d578e32b03a4b' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/actions.php',
|
||||
'7372b7fb88a9723cf5b76d456eb0b738' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/actions.php',
|
||||
'd4eb94df91a729802d18373ee8cdc79f' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup/actions.php',
|
||||
'd9927a8ddcd8b3a40fb28c24213827ff' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/actions.php',
|
||||
'e6f7f640a6586216432b53e5c9d1b472' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/utilities.php',
|
||||
'3d45c7e6a7f0e71849e33afe4b3b3ede' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/cli.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'S' =>
|
||||
array (
|
||||
'ScssPhp\\ScssPhp\\' => 16,
|
||||
),
|
||||
'A' =>
|
||||
array (
|
||||
'Automattic\\Jetpack\\Autoloader\\' => 30,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'ScssPhp\\ScssPhp\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/scssphp/scssphp/src',
|
||||
),
|
||||
'Automattic\\Jetpack\\Autoloader\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src',
|
||||
),
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'AhoCorasick\\MultiStringMatcher' => __DIR__ . '/..' . '/wikimedia/aho-corasick/src/MultiStringMatcher.php',
|
||||
'AhoCorasick\\MultiStringReplacer' => __DIR__ . '/..' . '/wikimedia/aho-corasick/src/MultiStringReplacer.php',
|
||||
'Automattic\\Jetpack\\A8c_Mc_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php',
|
||||
'Automattic\\Jetpack\\Admin_UI\\Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Assets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php',
|
||||
'Automattic\\Jetpack\\Assets\\Logo' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php',
|
||||
'Automattic\\Jetpack\\Assets\\Script_Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-script-data.php',
|
||||
'Automattic\\Jetpack\\Assets\\Semver' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php',
|
||||
'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/ManifestGenerator.php',
|
||||
'Automattic\\Jetpack\\Automatic_Install_Skin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php',
|
||||
'Automattic\\Jetpack\\Backup\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0001\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup/src/class-package-version-compat.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager_Impl' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager-impl.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Initial_State' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup/src/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Jetpack_Backup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup/src/class-jetpack-backup.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Jetpack_Backup_Upgrades' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup/src/class-jetpack-backup-upgrades.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Backup\\V0005\\Throw_On_Errors' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-throw-on-errors.php',
|
||||
'Automattic\\Jetpack\\Blaze' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-blaze/src/class-blaze.php',
|
||||
'Automattic\\Jetpack\\Blaze\\Dashboard' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-blaze/src/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Blaze\\Dashboard_Config_Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-blaze/src/class-dashboard-config-data.php',
|
||||
'Automattic\\Jetpack\\Blaze\\Dashboard_REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-blaze/src/class-dashboard-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Blaze\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-blaze/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Blocks' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-blocks/src/class-blocks.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Contracts\\Boost_API_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/contracts/boost-api-client.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Boost_API' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-boost-api.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Cacheable' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-cacheable.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Transient' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-transient.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Url' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-url.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-utils.php',
|
||||
'Automattic\\Jetpack\\Boost_Core\\Lib\\WPCOM_Boost_API_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-wpcom-boost-api-client.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Jetpack_Boost_Modules' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-jetpack-boost-modules.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Graph_History_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-graph-history-request.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_History' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-history.php',
|
||||
'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-request.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Featured_Content' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/class-featured-content.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Portfolio' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-portfolio.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Testimonial' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-testimonial.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Testimonial_Textarea_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-testimonial-textarea-control.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Jetpack_Testimonial_Title_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-jetpack-testimonial-title-control.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Main' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Nova_Restaurant' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/custom-post-types/class-nova-restaurant.php',
|
||||
'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/class-social-links.php',
|
||||
'Automattic\\Jetpack\\Composer\\Manager' => __DIR__ . '/..' . '/automattic/jetpack-composer-plugin/src/class-manager.php',
|
||||
'Automattic\\Jetpack\\Composer\\Plugin' => __DIR__ . '/..' . '/automattic/jetpack-composer-plugin/src/class-plugin.php',
|
||||
'Automattic\\Jetpack\\Config' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-config/src/class-config.php',
|
||||
'Automattic\\Jetpack\\Connection\\Authorize_Json_Api' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-authorize-json-api.php',
|
||||
'Automattic\\Jetpack\\Connection\\Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-client.php',
|
||||
'Automattic\\Jetpack\\Connection\\Connection_Assets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-assets.php',
|
||||
'Automattic\\Jetpack\\Connection\\Connection_Notice' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-notice.php',
|
||||
'Automattic\\Jetpack\\Connection\\Error_Handler' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php',
|
||||
'Automattic\\Jetpack\\Connection\\Initial_State' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\Connection\\Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php',
|
||||
'Automattic\\Jetpack\\Connection\\Manager_Interface' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php',
|
||||
'Automattic\\Jetpack\\Connection\\Nonce_Handler' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php',
|
||||
'Automattic\\Jetpack\\Connection\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Connection\\Package_Version_Tracker' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php',
|
||||
'Automattic\\Jetpack\\Connection\\Plugin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php',
|
||||
'Automattic\\Jetpack\\Connection\\Plugin_Storage' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php',
|
||||
'Automattic\\Jetpack\\Connection\\REST_Connector' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php',
|
||||
'Automattic\\Jetpack\\Connection\\Rest_Authentication' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\Force_2FA' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-force-2fa.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\Helpers' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\Notices' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php',
|
||||
'Automattic\\Jetpack\\Connection\\SSO\\User_Admin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php',
|
||||
'Automattic\\Jetpack\\Connection\\Secrets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php',
|
||||
'Automattic\\Jetpack\\Connection\\Server_Sandbox' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php',
|
||||
'Automattic\\Jetpack\\Connection\\Tokens' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php',
|
||||
'Automattic\\Jetpack\\Connection\\Tokens_Locks' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php',
|
||||
'Automattic\\Jetpack\\Connection\\Traits\\WPCOM_REST_API_Proxy_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php',
|
||||
'Automattic\\Jetpack\\Connection\\Urls' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php',
|
||||
'Automattic\\Jetpack\\Connection\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\Connection\\Webhooks' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php',
|
||||
'Automattic\\Jetpack\\Connection\\Webhooks\\Authorize_Redirect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php',
|
||||
'Automattic\\Jetpack\\Connection\\XMLRPC_Async_Call' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php',
|
||||
'Automattic\\Jetpack\\Connection\\XMLRPC_Connector' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php',
|
||||
'Automattic\\Jetpack\\Constants' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php',
|
||||
'Automattic\\Jetpack\\CookieState' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-cookiestate.php',
|
||||
'Automattic\\Jetpack\\Current_Plan' => __DIR__ . '/..' . '/automattic/jetpack-plans/src/class-current-plan.php',
|
||||
'Automattic\\Jetpack\\Device_Detection' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php',
|
||||
'Automattic\\Jetpack\\Device_Detection\\User_Agent_Info' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php',
|
||||
'Automattic\\Jetpack\\Error' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-error/src/class-error.php',
|
||||
'Automattic\\Jetpack\\Errors' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-errors.php',
|
||||
'Automattic\\Jetpack\\ExPlat' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php',
|
||||
'Automattic\\Jetpack\\ExPlat\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-explat/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Extensions\\Contact_Form\\Contact_Form_Block' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/blocks/contact-form/class-contact-form-block.php',
|
||||
'Automattic\\Jetpack\\Files' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-files.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Admin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-admin.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Endpoint' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-endpoint.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Field' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-field.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Plugin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-plugin.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Contact_Form_Shortcode' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-contact-form-shortcode.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Editor_View' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-editor-view.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Form_View' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-form-view.php',
|
||||
'Automattic\\Jetpack\\Forms\\ContactForm\\Util' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/contact-form/class-util.php',
|
||||
'Automattic\\Jetpack\\Forms\\Dashboard\\Dashboard' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/dashboard/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Forms\\Dashboard\\Dashboard_View_Switch' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/dashboard/class-dashboard-view-switch.php',
|
||||
'Automattic\\Jetpack\\Forms\\Jetpack_Forms' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/class-jetpack-forms.php',
|
||||
'Automattic\\Jetpack\\Forms\\Service\\Google_Drive' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/service/class-google-drive.php',
|
||||
'Automattic\\Jetpack\\Forms\\Service\\Post_To_Url' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/service/class-post-to-url.php',
|
||||
'Automattic\\Jetpack\\Forms\\WPCOM_REST_API_V2_Endpoint_Forms' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-forms/src/class-wpcom-rest-api-v2-endpoint-forms.php',
|
||||
'Automattic\\Jetpack\\Heartbeat' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php',
|
||||
'Automattic\\Jetpack\\IP\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\REST_Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\UI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php',
|
||||
'Automattic\\Jetpack\\IdentityCrisis\\URL_Secret' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php',
|
||||
'Automattic\\Jetpack\\Identity_Crisis' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-identity-crisis.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Core' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-core.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Image' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-image.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Image_Sizes' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-image-sizes.php',
|
||||
'Automattic\\Jetpack\\Image_CDN\\Image_CDN_Setup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn-setup.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Attachment' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-attachment.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Block' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-block.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Category' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-category.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Comment' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-comment.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Custom_CSS' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-custom-css.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\End' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-end.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Global_Style' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-global-style.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Import' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/trait-import.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Import_ID' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/trait-import-id.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-menu.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Menu_Item' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-menu-item.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Navigation' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-navigation.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Page' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-page.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Post' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-post.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Start' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-start.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Tag' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-tag.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Template' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-template.php',
|
||||
'Automattic\\Jetpack\\Import\\Endpoints\\Template_Part' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/endpoints/class-template-part.php',
|
||||
'Automattic\\Jetpack\\Import\\Main' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-import/src/class-main.php',
|
||||
'Automattic\\Jetpack\\JITMS\\JITM' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php',
|
||||
'Automattic\\Jetpack\\JITMS\\Post_Connection_JITM' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php',
|
||||
'Automattic\\Jetpack\\JITMS\\Pre_Connection_JITM' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php',
|
||||
'Automattic\\Jetpack\\JITMS\\Rest_Api_Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php',
|
||||
'Automattic\\Jetpack\\Jetpack_CRM_Data' => __DIR__ . '/../..' . '/src/class-jetpack-crm-data.php',
|
||||
'Automattic\\Jetpack\\Licensing' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php',
|
||||
'Automattic\\Jetpack\\Licensing\\Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Admin_Color_Schemes' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-color-schemes/class-admin-color-schemes.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Atomic_Additional_CSS_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-atomic-additional-css-manager.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Atomic_Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-atomic-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Base_Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-base-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\CSS_Customizer_Nudge' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-css-customizer-nudge.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\CSS_Nudge_Customize_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-css-nudge-customize-control.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Dashboard_Switcher_Tracking' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-dashboard-switcher-tracking.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Domain_Only_Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-domain-only-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Inline_Help' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/inline-help/class-inline-help.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Jetpack_Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-jetpack-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Main' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\P2_Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-p2-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\Posts_List_Page_Notification' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/wp-posts-list/class-posts-list-page-notification.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPCOM_Additional_CSS_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/nudges/additional-css/class-wpcom-additional-css-manager.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPCOM_Email_Subscription_Checker' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-wpcom-email-subscription-checker.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPCOM_User_Profile_Fields_Revert' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/profile-edit/class-wpcom-user-profile-fields-revert.php',
|
||||
'Automattic\\Jetpack\\Masterbar\\WPcom_Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-masterbar/src/admin-menu/class-wpcom-admin-menu.php',
|
||||
'Automattic\\Jetpack\\Modules' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-modules.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Activitylog' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Hybrid_Product' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Initializer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Jetpack_Manage' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Module_Product' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Product' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Anti_Spam' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Backup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Boost' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Complete' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Creator' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Crm' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Extras' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Growth' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Jetpack_Ai' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Newsletter' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Protect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Related_Posts' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Scan' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Search' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Search_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Security' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Site_Accelerator' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Social' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Starter' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Products\\Videopress' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_AI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Product_Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-product-data.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Products' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Purchases' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Recommendations_Evaluation' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\REST_Zendesk_Chat' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php',
|
||||
'Automattic\\Jetpack\\My_Jetpack\\Wpcom_Products' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php',
|
||||
'Automattic\\Jetpack\\Partner' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php',
|
||||
'Automattic\\Jetpack\\Partner_Coupon' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner-coupon.php',
|
||||
'Automattic\\Jetpack\\Password_Checker' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php',
|
||||
'Automattic\\Jetpack\\Paths' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-paths.php',
|
||||
'Automattic\\Jetpack\\Plans' => __DIR__ . '/..' . '/automattic/jetpack-plans/src/class-plans.php',
|
||||
'Automattic\\Jetpack\\Plugin\\Deprecate' => __DIR__ . '/../..' . '/src/class-deprecate.php',
|
||||
'Automattic\\Jetpack\\Plugin\\Tracking' => __DIR__ . '/../..' . '/src/class-tracking.php',
|
||||
'Automattic\\Jetpack\\Plugins_Installer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php',
|
||||
'Automattic\\Jetpack\\Post_List\\Post_List' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-post-list/src/class-post-list.php',
|
||||
'Automattic\\Jetpack\\Post_List\\Post_Thumbnail' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-post-list/src/class-post-thumbnail.php',
|
||||
'Automattic\\Jetpack\\Protect_Models' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\Extension_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\History_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\Status_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-status-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Models\\Threat_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Plan' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Protect_Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Scan_Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php',
|
||||
'Automattic\\Jetpack\\Protect_Status\\Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Connections' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-connections.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Jetpack_Social_Settings\\Dismissed_Notices' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/jetpack-social-settings/class-dismissed-notices.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Jetpack_Social_Settings\\Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/jetpack-social-settings/class-settings.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Keyring_Helper' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-keyring-helper.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Assets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-assets.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Base' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-base.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Script_Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-script-data.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Setup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-setup.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_UI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-ui.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Publicize_Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-publicize-utils.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Base_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-base-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Connections_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-connections-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Connections_Post_Field' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-connections-post-field.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_API\\Proxy_Requests' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/rest-api/class-proxy-requests.php',
|
||||
'Automattic\\Jetpack\\Publicize\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Services' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-services.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Share_Limits' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-share-limits.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Admin_Page' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/class-social-admin-page.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Post_Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-post-settings.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\REST_Settings_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-rest-settings-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\REST_Token_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-rest-token-controller.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-settings.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Setup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-setup.php',
|
||||
'Automattic\\Jetpack\\Publicize\\Social_Image_Generator\\Templates' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/class-templates.php',
|
||||
'Automattic\\Jetpack\\Redirect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php',
|
||||
'Automattic\\Jetpack\\Roles' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php',
|
||||
'Automattic\\Jetpack\\Search\\CLI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-cli.php',
|
||||
'Automattic\\Jetpack\\Search\\Classic_Search' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/classic-search/class-classic-search.php',
|
||||
'Automattic\\Jetpack\\Search\\Customberg' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/customberg/class-customberg.php',
|
||||
'Automattic\\Jetpack\\Search\\Customizer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/customizer/class-customizer.php',
|
||||
'Automattic\\Jetpack\\Search\\Dashboard' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/dashboard/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Search\\Excluded_Post_Types_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/customizer/customize-controls/class-excluded-post-types-control.php',
|
||||
'Automattic\\Jetpack\\Search\\Helper' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-helper.php',
|
||||
'Automattic\\Jetpack\\Search\\Initial_State' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/dashboard/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\Search\\Initializer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/initializers/class-initializer.php',
|
||||
'Automattic\\Jetpack\\Search\\Instant_Search' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/instant-search/class-instant-search.php',
|
||||
'Automattic\\Jetpack\\Search\\Label_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/customizer/customize-controls/class-label-control.php',
|
||||
'Automattic\\Jetpack\\Search\\Module_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-module-control.php',
|
||||
'Automattic\\Jetpack\\Search\\Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-options.php',
|
||||
'Automattic\\Jetpack\\Search\\Package' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-package.php',
|
||||
'Automattic\\Jetpack\\Search\\Plan' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-plan.php',
|
||||
'Automattic\\Jetpack\\Search\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Search\\Search_Widget' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/widgets/class-search-widget.php',
|
||||
'Automattic\\Jetpack\\Search\\Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-settings.php',
|
||||
'Automattic\\Jetpack\\Search\\Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-stats.php',
|
||||
'Automattic\\Jetpack\\Search\\Template_Tags' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/class-template-tags.php',
|
||||
'Automattic\\Jetpack\\Search\\WPES\\Query_Builder' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/wpes/class-query-builder.php',
|
||||
'Automattic\\Jetpack\\Search\\WPES\\Query_Parser' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-search/src/wpes/class-query-parser.php',
|
||||
'Automattic\\Jetpack\\Stats\\Main' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Stats\\Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats/src/class-options.php',
|
||||
'Automattic\\Jetpack\\Stats\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Stats\\REST_Provider' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats/src/class-rest-provider.php',
|
||||
'Automattic\\Jetpack\\Stats\\Tracking_Pixel' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats/src/class-tracking-pixel.php',
|
||||
'Automattic\\Jetpack\\Stats\\WPCOM_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats/src/class-wpcom-stats.php',
|
||||
'Automattic\\Jetpack\\Stats\\XMLRPC_Provider' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats/src/class-xmlrpc-provider.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Dashboard' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Main' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Notices' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-notices.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Odyssey_Assets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-odyssey-assets.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\Odyssey_Config_Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-odyssey-config-data.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\WPCOM_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-wpcom-client.php',
|
||||
'Automattic\\Jetpack\\Stats_Admin\\WP_Dashboard_Odyssey_Widget' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-stats-admin/src/class-wp-dashboard-odyssey-widget.php',
|
||||
'Automattic\\Jetpack\\Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-status.php',
|
||||
'Automattic\\Jetpack\\Status\\Cache' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-cache.php',
|
||||
'Automattic\\Jetpack\\Status\\Host' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-host.php',
|
||||
'Automattic\\Jetpack\\Status\\Visitor' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php',
|
||||
'Automattic\\Jetpack\\Sync\\Actions' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php',
|
||||
'Automattic\\Jetpack\\Sync\\Codec_Interface' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php',
|
||||
'Automattic\\Jetpack\\Sync\\Data_Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php',
|
||||
'Automattic\\Jetpack\\Sync\\Dedicated_Sender' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php',
|
||||
'Automattic\\Jetpack\\Sync\\Default_Filter_Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php',
|
||||
'Automattic\\Jetpack\\Sync\\Defaults' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php',
|
||||
'Automattic\\Jetpack\\Sync\\Functions' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php',
|
||||
'Automattic\\Jetpack\\Sync\\Health' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-health.php',
|
||||
'Automattic\\Jetpack\\Sync\\JSON_Deflate_Array_Codec' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php',
|
||||
'Automattic\\Jetpack\\Sync\\Listener' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php',
|
||||
'Automattic\\Jetpack\\Sync\\Lock' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php',
|
||||
'Automattic\\Jetpack\\Sync\\Main' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-main.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Attachments' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-attachments.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Callables' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Comments' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Constants' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync_Immediately' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Import' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Menus' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Meta' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Module' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Network_Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Plugins' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Posts' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Protect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Search' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Term_Relationships' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-term-relationships.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Terms' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Themes' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Updates' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\Users' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\WP_Super_Cache' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php',
|
||||
'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce_HPOS_Orders' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php',
|
||||
'Automattic\\Jetpack\\Sync\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Table' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php',
|
||||
'Automattic\\Jetpack\\Sync\\Queue_Buffer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php',
|
||||
'Automattic\\Jetpack\\Sync\\REST_Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php',
|
||||
'Automattic\\Jetpack\\Sync\\REST_Sender' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Usermeta' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Users' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php',
|
||||
'Automattic\\Jetpack\\Sync\\Replicastore_Interface' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/interface-replicastore.php',
|
||||
'Automattic\\Jetpack\\Sync\\Sender' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php',
|
||||
'Automattic\\Jetpack\\Sync\\Server' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-server.php',
|
||||
'Automattic\\Jetpack\\Sync\\Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php',
|
||||
'Automattic\\Jetpack\\Sync\\Simple_Codec' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php',
|
||||
'Automattic\\Jetpack\\Sync\\Users' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-users.php',
|
||||
'Automattic\\Jetpack\\Sync\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\Terms_Of_Service' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php',
|
||||
'Automattic\\Jetpack\\Tracking' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\AJAX' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-ajax.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Access_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-access-control.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Admin_UI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-admin-ui.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Attachment_Handler' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-attachment-handler.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Block_Editor_Content' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-block-editor-content.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Block_Editor_Extensions' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-block-editor-extensions.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-data.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Divi' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-divi.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Initializer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-initializer.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Jwt_Token_Bridge' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-jwt-token-bridge.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Module_Control' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-module-control.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-options.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-package-version.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Plan' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-plan.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Site' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-site.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-stats.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-status.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Upload_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-upload-exception.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Uploader' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-uploader.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Uploader_Rest_Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-uploader-rest-endpoints.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-utils.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPressToken' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopresstoken.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPress_Rest_Api_V1_Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopress-rest-api-v1-settings.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPress_Rest_Api_V1_Site' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopress-rest-api-v1-site.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\VideoPress_Rest_Api_V1_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-videopress-rest-api-v1-stats.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\WPCOM_REST_API_V2_Attachment_VideoPress_Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-wpcom-rest-api-v2-attachment-videopress-data.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\WPCOM_REST_API_V2_Attachment_VideoPress_Field' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-wpcom-rest-api-v2-attachment-field-videopress.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\WPCOM_REST_API_V2_Endpoint_VideoPress' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-wpcom-rest-api-v2-endpoint-videopress.php',
|
||||
'Automattic\\Jetpack\\VideoPress\\XMLRPC' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/class-xmlrpc.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Blocked_Login_Page' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Math_Authenticate' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-math-fallback.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Shared_Functions' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-shared-functions.php',
|
||||
'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Transient_Cleanup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php',
|
||||
'Automattic\\Jetpack\\Waf\\CLI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php',
|
||||
'Automattic\\Jetpack\\Waf\\File_System_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php',
|
||||
'Automattic\\Jetpack\\Waf\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php',
|
||||
'Automattic\\Jetpack\\Waf\\Rules_API_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-rules-api-exception.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Blocklog_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Compatibility' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Constants' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-waf-exception.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Initializer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Operators' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Rules_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Runner' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runner.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Runtime' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runtime.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Standalone_Bootstrap' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php',
|
||||
'Automattic\\Jetpack\\Waf\\Waf_Transforms' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Dashboard' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-wordads/src/dashboard/class-dashboard.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Helper' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-wordads/src/class-helper.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Initial_State' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-wordads/src/dashboard/class-initial-state.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Initializer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-wordads/src/initializers/class-initializer.php',
|
||||
'Automattic\\Jetpack\\WordAds\\Package' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-wordads/src/class-package.php',
|
||||
'Automattic\\Jetpack\\WordAds\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-wordads/src/class-rest-controller.php',
|
||||
'Automattic\\Woocommerce_Analytics' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-woocommerce-analytics.php',
|
||||
'Automattic\\Woocommerce_Analytics\\My_Account' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-my-account.php',
|
||||
'Automattic\\Woocommerce_Analytics\\Universal' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-universal.php',
|
||||
'Automattic\\Woocommerce_Analytics\\Woo_Analytics_Trait' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/woocommerce-analytics/src/class-woo-analytics-trait.php',
|
||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||
'Jetpack_Customize_Control_Title' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/content-options/customizer.php',
|
||||
'Jetpack_IXR_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php',
|
||||
'Jetpack_IXR_ClientMulticall' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php',
|
||||
'Jetpack_Modules_Overrides' => __DIR__ . '/../..' . '/src/class-jetpack-modules-overrides.php',
|
||||
'Jetpack_Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php',
|
||||
'Jetpack_Signature' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php',
|
||||
'Jetpack_Tracks_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php',
|
||||
'Jetpack_Tracks_Event' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php',
|
||||
'Jetpack_XMLRPC_Server' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php',
|
||||
'ScssPhp\\ScssPhp\\Base\\Range' => __DIR__ . '/..' . '/scssphp/scssphp/src/Base/Range.php',
|
||||
'ScssPhp\\ScssPhp\\Block' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\AtRootBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/AtRootBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\CallableBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/CallableBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ContentBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ContentBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\DirectiveBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/DirectiveBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\EachBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/EachBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ElseBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ElseBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ElseifBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ElseifBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\ForBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ForBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\IfBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/IfBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\MediaBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/MediaBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\NestedPropertyBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/NestedPropertyBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Block\\WhileBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/WhileBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Cache' => __DIR__ . '/..' . '/scssphp/scssphp/src/Cache.php',
|
||||
'ScssPhp\\ScssPhp\\Colors' => __DIR__ . '/..' . '/scssphp/scssphp/src/Colors.php',
|
||||
'ScssPhp\\ScssPhp\\CompilationResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/CompilationResult.php',
|
||||
'ScssPhp\\ScssPhp\\Compiler' => __DIR__ . '/..' . '/scssphp/scssphp/src/Compiler.php',
|
||||
'ScssPhp\\ScssPhp\\Compiler\\CachedResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Compiler/CachedResult.php',
|
||||
'ScssPhp\\ScssPhp\\Compiler\\Environment' => __DIR__ . '/..' . '/scssphp/scssphp/src/Compiler/Environment.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\CompilerException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/CompilerException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\ParserException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/ParserException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\RangeException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/RangeException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\SassException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SassException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\SassScriptException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SassScriptException.php',
|
||||
'ScssPhp\\ScssPhp\\Exception\\ServerException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/ServerException.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Compact' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Compact.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Compressed' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Compressed.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Crunched' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Crunched.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Debug' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Debug.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Expanded' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Expanded.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\Nested' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Nested.php',
|
||||
'ScssPhp\\ScssPhp\\Formatter\\OutputBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/OutputBlock.php',
|
||||
'ScssPhp\\ScssPhp\\Logger\\LoggerInterface' => __DIR__ . '/..' . '/scssphp/scssphp/src/Logger/LoggerInterface.php',
|
||||
'ScssPhp\\ScssPhp\\Logger\\QuietLogger' => __DIR__ . '/..' . '/scssphp/scssphp/src/Logger/QuietLogger.php',
|
||||
'ScssPhp\\ScssPhp\\Logger\\StreamLogger' => __DIR__ . '/..' . '/scssphp/scssphp/src/Logger/StreamLogger.php',
|
||||
'ScssPhp\\ScssPhp\\Node' => __DIR__ . '/..' . '/scssphp/scssphp/src/Node.php',
|
||||
'ScssPhp\\ScssPhp\\Node\\Number' => __DIR__ . '/..' . '/scssphp/scssphp/src/Node/Number.php',
|
||||
'ScssPhp\\ScssPhp\\OutputStyle' => __DIR__ . '/..' . '/scssphp/scssphp/src/OutputStyle.php',
|
||||
'ScssPhp\\ScssPhp\\Parser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser.php',
|
||||
'ScssPhp\\ScssPhp\\SourceMap\\Base64' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/Base64.php',
|
||||
'ScssPhp\\ScssPhp\\SourceMap\\Base64VLQ' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/Base64VLQ.php',
|
||||
'ScssPhp\\ScssPhp\\SourceMap\\SourceMapGenerator' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/SourceMapGenerator.php',
|
||||
'ScssPhp\\ScssPhp\\Type' => __DIR__ . '/..' . '/scssphp/scssphp/src/Type.php',
|
||||
'ScssPhp\\ScssPhp\\Util' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util.php',
|
||||
'ScssPhp\\ScssPhp\\Util\\Path' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/Path.php',
|
||||
'ScssPhp\\ScssPhp\\ValueConverter' => __DIR__ . '/..' . '/scssphp/scssphp/src/ValueConverter.php',
|
||||
'ScssPhp\\ScssPhp\\Version' => __DIR__ . '/..' . '/scssphp/scssphp/src/Version.php',
|
||||
'ScssPhp\\ScssPhp\\Warn' => __DIR__ . '/..' . '/scssphp/scssphp/src/Warn.php',
|
||||
'VIDEOPRESS_PRIVACY' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/utility-functions.php',
|
||||
'VideoPressUploader\\File_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-file-exception.php',
|
||||
'VideoPressUploader\\Transient_Store' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-transient-store.php',
|
||||
'VideoPressUploader\\Tus_Abstract_Cache' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-abstract-cache.php',
|
||||
'VideoPressUploader\\Tus_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-client.php',
|
||||
'VideoPressUploader\\Tus_Date_Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-date-utils.php',
|
||||
'VideoPressUploader\\Tus_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-exception.php',
|
||||
'VideoPressUploader\\Tus_File' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/tus/class-tus-file.php',
|
||||
'VideoPress_Divi_Extension' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/videopress-divi/class-videopress-divi-extension.php',
|
||||
'VideoPress_Divi_Module' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-videopress/src/videopress-divi/class-videopress-divi-module.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInitf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,455 @@
|
||||
<?php return array(
|
||||
'root' => array(
|
||||
'name' => 'automattic/jetpack',
|
||||
'pretty_version' => 'dev-trunk',
|
||||
'version' => 'dev-trunk',
|
||||
'reference' => null,
|
||||
'type' => 'wordpress-plugin',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'dev' => false,
|
||||
),
|
||||
'versions' => array(
|
||||
'automattic/jetpack' => array(
|
||||
'pretty_version' => 'dev-trunk',
|
||||
'version' => 'dev-trunk',
|
||||
'reference' => null,
|
||||
'type' => 'wordpress-plugin',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-a8c-mc-stats' => array(
|
||||
'pretty_version' => 'v3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => 'd6bdf2f1d1941e0a22d17c6f3152097d8e0a30e6',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-a8c-mc-stats',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-admin-ui' => array(
|
||||
'pretty_version' => 'v0.5.2',
|
||||
'version' => '0.5.2.0',
|
||||
'reference' => 'cf2f30b5ebc52c88293d406aca6b6ef0677c6aff',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-admin-ui',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-assets' => array(
|
||||
'pretty_version' => 'v4.0.4',
|
||||
'version' => '4.0.4.0',
|
||||
'reference' => '0ec5cfcd948b5a791ba99819eb095adf979f605c',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-assets',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-autoloader' => array(
|
||||
'pretty_version' => 'v5.0.1',
|
||||
'version' => '5.0.1.0',
|
||||
'reference' => 'ba3f5146426367c718312a0da87ebd596ed9cf33',
|
||||
'type' => 'composer-plugin',
|
||||
'install_path' => __DIR__ . '/../automattic/jetpack-autoloader',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-backup' => array(
|
||||
'pretty_version' => 'v4.0.8',
|
||||
'version' => '4.0.8.0',
|
||||
'reference' => '7e55a65729646fc7bee60cfc471ecac8c4a09197',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-backup',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-backup-helper-script-manager' => array(
|
||||
'pretty_version' => 'v0.3.2',
|
||||
'version' => '0.3.2.0',
|
||||
'reference' => '58c2e8c72c0bd460c09a0f83a61da1a8c4b29feb',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-backup-helper-script-manager',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-blaze' => array(
|
||||
'pretty_version' => 'v0.25.7',
|
||||
'version' => '0.25.7.0',
|
||||
'reference' => '5792f96994024c284073aafe3cebee6262105d65',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-blaze',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-blocks' => array(
|
||||
'pretty_version' => 'v3.0.2',
|
||||
'version' => '3.0.2.0',
|
||||
'reference' => '332c69e171ff81aba7da914774e5ecdf9e0544c0',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-blocks',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-boost-core' => array(
|
||||
'pretty_version' => 'v0.3.5',
|
||||
'version' => '0.3.5.0',
|
||||
'reference' => '343da047cdc04a7e6af71bc7023fcafd10664aec',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-boost-core',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-boost-speed-score' => array(
|
||||
'pretty_version' => 'v0.4.1',
|
||||
'version' => '0.4.1.0',
|
||||
'reference' => '159f30af90b76207d7a8d85c7b7bfeff5ba2ae56',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-boost-speed-score',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-classic-theme-helper' => array(
|
||||
'pretty_version' => 'v0.9.3',
|
||||
'version' => '0.9.3.0',
|
||||
'reference' => '2846c1dd8e244c059782941fed6665cb74b2274d',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-classic-theme-helper',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-compat' => array(
|
||||
'pretty_version' => 'v4.0.0',
|
||||
'version' => '4.0.0.0',
|
||||
'reference' => '3ae8fee75809ed2b621b5ea8f96cb72f5e6dfefc',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-compat',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-composer-plugin' => array(
|
||||
'pretty_version' => 'v4.0.0',
|
||||
'version' => '4.0.0.0',
|
||||
'reference' => '1cba7634cd30813c0bce0331e37b01bcfa997f8b',
|
||||
'type' => 'composer-plugin',
|
||||
'install_path' => __DIR__ . '/../automattic/jetpack-composer-plugin',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-config' => array(
|
||||
'pretty_version' => 'v3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => 'fc719eff5073634b0c62793b05be913ca634e192',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-config',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-connection' => array(
|
||||
'pretty_version' => 'v6.3.2',
|
||||
'version' => '6.3.2.0',
|
||||
'reference' => '10208fa4049939ca16f61fffbb77074a833861ce',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-connection',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-constants' => array(
|
||||
'pretty_version' => 'v3.0.1',
|
||||
'version' => '3.0.1.0',
|
||||
'reference' => 'd4b7820defcdb40c1add88d5ebd722e4ba80a873',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-constants',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-device-detection' => array(
|
||||
'pretty_version' => 'v3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => '06b820c178b55a2befaf59588d5fcad7d4606d9a',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-device-detection',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-error' => array(
|
||||
'pretty_version' => 'v3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => '898cbe8adb9e2fe2ab8ee7dcc5553704d2d9d383',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-error',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-explat' => array(
|
||||
'pretty_version' => 'v0.2.5',
|
||||
'version' => '0.2.5.0',
|
||||
'reference' => '3d1a949b88c0dd31a60155e1c86c6fd18243e258',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-explat',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-forms' => array(
|
||||
'pretty_version' => 'v0.36.0',
|
||||
'version' => '0.36.0.0',
|
||||
'reference' => 'd62cb39d861ca8eecd9a6708f1a69b026b032648',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-forms',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-image-cdn' => array(
|
||||
'pretty_version' => 'v0.7.4',
|
||||
'version' => '0.7.4.0',
|
||||
'reference' => '5dd4113906ff07c9903b28cf19c7350a81cc31ac',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-image-cdn',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-import' => array(
|
||||
'pretty_version' => 'v0.9.3',
|
||||
'version' => '0.9.3.0',
|
||||
'reference' => '48e726394c007c2d47578761bb3b99c0a7a7956d',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-import',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-ip' => array(
|
||||
'pretty_version' => 'v0.4.1',
|
||||
'version' => '0.4.1.0',
|
||||
'reference' => '04d7deb2c16faa6c4a3e5074bf0e12c8a87d035a',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-ip',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-jitm' => array(
|
||||
'pretty_version' => 'v4.0.5',
|
||||
'version' => '4.0.5.0',
|
||||
'reference' => '03d5b75f9e453f5a734c24c682f3a544e41cd060',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-jitm',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-licensing' => array(
|
||||
'pretty_version' => 'v3.0.4',
|
||||
'version' => '3.0.4.0',
|
||||
'reference' => 'dafe9fee06b67706c31d4229254029209f12995a',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-licensing',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-logo' => array(
|
||||
'pretty_version' => 'v3.0.0',
|
||||
'version' => '3.0.0.0',
|
||||
'reference' => 'ba35cdbfc401a43ab4e5cc4085048dfe6da3da1f',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-logo',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-masterbar' => array(
|
||||
'pretty_version' => 'v0.12.1',
|
||||
'version' => '0.12.1.0',
|
||||
'reference' => '9af75ea41ea04d8d0ce2f37dd9156c96dd760780',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-masterbar',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-my-jetpack' => array(
|
||||
'pretty_version' => 'v5.4.1',
|
||||
'version' => '5.4.1.0',
|
||||
'reference' => '5d99814b8d2962038816c9556e7990b975a38fe0',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-my-jetpack',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-password-checker' => array(
|
||||
'pretty_version' => 'v0.4.2',
|
||||
'version' => '0.4.2.0',
|
||||
'reference' => 'bb763d36606b4e75483211a8d543e4ffac746d66',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-password-checker',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-plans' => array(
|
||||
'pretty_version' => 'v0.5.2',
|
||||
'version' => '0.5.2.0',
|
||||
'reference' => '8f16a9a81fc40e8e162f983193b94e489fa3a3e6',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../automattic/jetpack-plans',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-plugins-installer' => array(
|
||||
'pretty_version' => 'v0.5.0',
|
||||
'version' => '0.5.0.0',
|
||||
'reference' => 'b54af3a580df5f766011997cf8676e94d2976c73',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-plugins-installer',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-post-list' => array(
|
||||
'pretty_version' => 'v0.8.0',
|
||||
'version' => '0.8.0.0',
|
||||
'reference' => '35891c5bc7dd7e0ad9ded89aea617d5e6b5b8e33',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-post-list',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-protect-models' => array(
|
||||
'pretty_version' => 'v0.4.2',
|
||||
'version' => '0.4.2.0',
|
||||
'reference' => 'a4cab33eb64a0f4ac21ee2189b542f87b9b731b0',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-protect-models',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-protect-status' => array(
|
||||
'pretty_version' => 'v0.4.3',
|
||||
'version' => '0.4.3.0',
|
||||
'reference' => '6cec5d61ab79320c3a9b4be9a9f25655c829a7c1',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-protect-status',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-publicize' => array(
|
||||
'pretty_version' => 'v0.59.0',
|
||||
'version' => '0.59.0.0',
|
||||
'reference' => '543941c6195621bc058e8ac9209539d57501c3c7',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-publicize',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-redirect' => array(
|
||||
'pretty_version' => 'v3.0.1',
|
||||
'version' => '3.0.1.0',
|
||||
'reference' => '89732a3ba1c5eba8cfd948b7567823cd884102d5',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-redirect',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-roles' => array(
|
||||
'pretty_version' => 'v3.0.1',
|
||||
'version' => '3.0.1.0',
|
||||
'reference' => 'fe5f2a45901ea14be00728119d097619615fb031',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-roles',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-search' => array(
|
||||
'pretty_version' => 'v0.47.8',
|
||||
'version' => '0.47.8.0',
|
||||
'reference' => 'e3700c728d8895343ec145e47aedebeaef23f78b',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-search',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-stats' => array(
|
||||
'pretty_version' => 'v0.15.1',
|
||||
'version' => '0.15.1.0',
|
||||
'reference' => '4ee70c2dc7bc64fc7d7dfde266feb92fd0d840d2',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-stats',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-stats-admin' => array(
|
||||
'pretty_version' => 'v0.24.1',
|
||||
'version' => '0.24.1.0',
|
||||
'reference' => '4b0070d5f2cedd91e52dd192246c2d9d4932d1b9',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-stats-admin',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-status' => array(
|
||||
'pretty_version' => 'v5.0.3',
|
||||
'version' => '5.0.3.0',
|
||||
'reference' => '5d8e55567df9611cf41139e223fb6b4201383f1c',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-status',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-sync' => array(
|
||||
'pretty_version' => 'v4.6.0',
|
||||
'version' => '4.6.0.0',
|
||||
'reference' => '1e00f240ffbbf1bc8a384ecd3258574ee0571688',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-sync',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-videopress' => array(
|
||||
'pretty_version' => 'v0.25.9',
|
||||
'version' => '0.25.9.0',
|
||||
'reference' => '480129951fe2806134560d5d4be7aa176294c3b9',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-videopress',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-waf' => array(
|
||||
'pretty_version' => 'v0.23.3',
|
||||
'version' => '0.23.3.0',
|
||||
'reference' => '56cdf49331c8a7b8eadaac7a203afac6032d2424',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-waf',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/jetpack-wordads' => array(
|
||||
'pretty_version' => 'v0.4.7',
|
||||
'version' => '0.4.7.0',
|
||||
'reference' => '17c5526c424fd1c6a2941f784348538db3086bf0',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-wordads',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'automattic/woocommerce-analytics' => array(
|
||||
'pretty_version' => 'v0.4.1',
|
||||
'version' => '0.4.1.0',
|
||||
'reference' => 'b3565fced86fde6241fd466592f3758c3cd95d49',
|
||||
'type' => 'jetpack-library',
|
||||
'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/woocommerce-analytics',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'scssphp/scssphp' => array(
|
||||
'pretty_version' => 'v1.12.0',
|
||||
'version' => '1.12.0.0',
|
||||
'reference' => 'a6b20c170ddb95f116b3d148a466a7bed1e85c35',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../scssphp/scssphp',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'wikimedia/aho-corasick' => array(
|
||||
'pretty_version' => 'v1.0.1',
|
||||
'version' => '1.0.1.0',
|
||||
'reference' => '2f3a1bd765913637a66eade658d11d82f0e551be',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../wikimedia/aho-corasick',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
),
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
// This file `jetpack_autoload_filemap.php` was auto generated by automattic/jetpack-autoloader.
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'3773ef3f09c37da5478d578e32b03a4b' => array(
|
||||
'version' => '4.0.4.0',
|
||||
'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/actions.php'
|
||||
),
|
||||
'7372b7fb88a9723cf5b76d456eb0b738' => array(
|
||||
'version' => '6.3.2.0',
|
||||
'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/actions.php'
|
||||
),
|
||||
'd4eb94df91a729802d18373ee8cdc79f' => array(
|
||||
'version' => '4.0.8.0',
|
||||
'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup/actions.php'
|
||||
),
|
||||
'd9927a8ddcd8b3a40fb28c24213827ff' => array(
|
||||
'version' => '0.59.0.0',
|
||||
'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/actions.php'
|
||||
),
|
||||
'e6f7f640a6586216432b53e5c9d1b472' => array(
|
||||
'version' => '0.59.0.0',
|
||||
'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-publicize/src/social-image-generator/utilities.php'
|
||||
),
|
||||
'3d45c7e6a7f0e71849e33afe4b3b3ede' => array(
|
||||
'version' => '0.23.3.0',
|
||||
'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/cli.php'
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
// platform_check.php @generated by Composer
|
||||
|
||||
$issues = array();
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70200)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
|
||||
if ($issues) {
|
||||
if (!headers_sent()) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
}
|
||||
if (!ini_get('display_errors')) {
|
||||
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
|
||||
} elseif (!headers_sent()) {
|
||||
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
|
||||
}
|
||||
}
|
||||
trigger_error(
|
||||
'Composer detected issues in your platform: ' . implode(' ', $issues),
|
||||
E_USER_ERROR
|
||||
);
|
||||
}
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
use Automattic\Jetpack\Autoloader\AutoloadGenerator;
|
||||
|
||||
/**
|
||||
* This class selects the package version for the autoloader.
|
||||
*/
|
||||
class Autoloader_Handler {
|
||||
|
||||
/**
|
||||
* The PHP_Autoloader instance.
|
||||
*
|
||||
* @var PHP_Autoloader
|
||||
*/
|
||||
private $php_autoloader;
|
||||
|
||||
/**
|
||||
* The Hook_Manager instance.
|
||||
*
|
||||
* @var Hook_Manager
|
||||
*/
|
||||
private $hook_manager;
|
||||
|
||||
/**
|
||||
* The Manifest_Reader instance.
|
||||
*
|
||||
* @var Manifest_Reader
|
||||
*/
|
||||
private $manifest_reader;
|
||||
|
||||
/**
|
||||
* The Version_Selector instance.
|
||||
*
|
||||
* @var Version_Selector
|
||||
*/
|
||||
private $version_selector;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param PHP_Autoloader $php_autoloader The PHP_Autoloader instance.
|
||||
* @param Hook_Manager $hook_manager The Hook_Manager instance.
|
||||
* @param Manifest_Reader $manifest_reader The Manifest_Reader instance.
|
||||
* @param Version_Selector $version_selector The Version_Selector instance.
|
||||
*/
|
||||
public function __construct( $php_autoloader, $hook_manager, $manifest_reader, $version_selector ) {
|
||||
$this->php_autoloader = $php_autoloader;
|
||||
$this->hook_manager = $hook_manager;
|
||||
$this->manifest_reader = $manifest_reader;
|
||||
$this->version_selector = $version_selector;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see whether or not an autoloader is currently in the process of initializing.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function is_initializing() {
|
||||
// If no version has been set it means that no autoloader has started initializing yet.
|
||||
global $jetpack_autoloader_latest_version;
|
||||
if ( ! isset( $jetpack_autoloader_latest_version ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// When the version is set but the classmap is not it ALWAYS means that this is the
|
||||
// latest autoloader and is being included by an older one.
|
||||
global $jetpack_packages_classmap;
|
||||
if ( empty( $jetpack_packages_classmap ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Version 2.4.0 added a new global and altered the reset semantics. We need to check
|
||||
// the other global as well since it may also point at initialization.
|
||||
// Note: We don't need to check for the class first because every autoloader that
|
||||
// will set the latest version global requires this class in the classmap.
|
||||
$replacing_version = $jetpack_packages_classmap[ AutoloadGenerator::class ]['version'];
|
||||
if ( $this->version_selector->is_dev_version( $replacing_version ) || version_compare( $replacing_version, '2.4.0.0', '>=' ) ) {
|
||||
global $jetpack_autoloader_loader;
|
||||
if ( ! isset( $jetpack_autoloader_loader ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activates an autoloader using the given plugins and activates it.
|
||||
*
|
||||
* @param string[] $plugins The plugins to initialize the autoloader for.
|
||||
*/
|
||||
public function activate_autoloader( $plugins ) {
|
||||
global $jetpack_packages_psr4;
|
||||
$jetpack_packages_psr4 = array();
|
||||
$this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_psr4.php', $jetpack_packages_psr4 );
|
||||
|
||||
global $jetpack_packages_classmap;
|
||||
$jetpack_packages_classmap = array();
|
||||
$this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_classmap.php', $jetpack_packages_classmap );
|
||||
|
||||
global $jetpack_packages_filemap;
|
||||
$jetpack_packages_filemap = array();
|
||||
$this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_filemap.php', $jetpack_packages_filemap );
|
||||
|
||||
$loader = new Version_Loader(
|
||||
$this->version_selector,
|
||||
$jetpack_packages_classmap,
|
||||
$jetpack_packages_psr4,
|
||||
$jetpack_packages_filemap
|
||||
);
|
||||
|
||||
$this->php_autoloader->register_autoloader( $loader );
|
||||
|
||||
// Now that the autoloader is active we can load the filemap.
|
||||
$loader->load_filemap();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the active autoloader and all related global state.
|
||||
*/
|
||||
public function reset_autoloader() {
|
||||
$this->php_autoloader->unregister_autoloader();
|
||||
$this->hook_manager->reset();
|
||||
|
||||
// Clear all of the autoloader globals so that older autoloaders don't do anything strange.
|
||||
global $jetpack_autoloader_latest_version;
|
||||
$jetpack_autoloader_latest_version = null;
|
||||
|
||||
global $jetpack_packages_classmap;
|
||||
$jetpack_packages_classmap = array(); // Must be array to avoid exceptions in old autoloaders!
|
||||
|
||||
global $jetpack_packages_psr4;
|
||||
$jetpack_packages_psr4 = array(); // Must be array to avoid exceptions in old autoloaders!
|
||||
|
||||
global $jetpack_packages_filemap;
|
||||
$jetpack_packages_filemap = array(); // Must be array to avoid exceptions in old autoloaders!
|
||||
}
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
use Automattic\Jetpack\Autoloader\AutoloadGenerator;
|
||||
|
||||
/**
|
||||
* This class locates autoloaders.
|
||||
*/
|
||||
class Autoloader_Locator {
|
||||
|
||||
/**
|
||||
* The object for comparing autoloader versions.
|
||||
*
|
||||
* @var Version_Selector
|
||||
*/
|
||||
private $version_selector;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param Version_Selector $version_selector The version selector object.
|
||||
*/
|
||||
public function __construct( $version_selector ) {
|
||||
$this->version_selector = $version_selector;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the plugin with the latest autoloader.
|
||||
*
|
||||
* @param array $plugin_paths An array of plugin paths.
|
||||
* @param string $latest_version The latest version reference. @phan-output-reference.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function find_latest_autoloader( $plugin_paths, &$latest_version ) {
|
||||
$latest_plugin = null;
|
||||
|
||||
foreach ( $plugin_paths as $plugin_path ) {
|
||||
$version = $this->get_autoloader_version( $plugin_path );
|
||||
if ( ! $version || ! $this->version_selector->is_version_update_required( $latest_version, $version ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$latest_version = $version;
|
||||
$latest_plugin = $plugin_path;
|
||||
}
|
||||
|
||||
return $latest_plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the path to the autoloader.
|
||||
*
|
||||
* @param string $plugin_path The path to the plugin.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_autoloader_path( $plugin_path ) {
|
||||
return trailingslashit( $plugin_path ) . 'vendor/autoload_packages.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the version for the autoloader.
|
||||
*
|
||||
* @param string $plugin_path The path to the plugin.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function get_autoloader_version( $plugin_path ) {
|
||||
$classmap = trailingslashit( $plugin_path ) . 'vendor/composer/jetpack_autoload_classmap.php';
|
||||
if ( ! file_exists( $classmap ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$classmap = require $classmap;
|
||||
if ( isset( $classmap[ AutoloadGenerator::class ] ) ) {
|
||||
return $classmap[ AutoloadGenerator::class ]['version'];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class handles management of the actual PHP autoloader.
|
||||
*/
|
||||
class Autoloader {
|
||||
|
||||
/**
|
||||
* Checks to see whether or not the autoloader should be initialized and then initializes it if so.
|
||||
*
|
||||
* @param Container|null $container The container we want to use for autoloader initialization. If none is given
|
||||
* then a container will be created automatically.
|
||||
*/
|
||||
public static function init( $container = null ) {
|
||||
// The container holds and manages the lifecycle of our dependencies
|
||||
// to make them easier to work with and increase flexibility.
|
||||
if ( ! isset( $container ) ) {
|
||||
require_once __DIR__ . '/class-container.php';
|
||||
$container = new Container();
|
||||
}
|
||||
|
||||
// phpcs:disable Generic.Commenting.DocComment.MissingShort
|
||||
|
||||
/** @var Autoloader_Handler $autoloader_handler */
|
||||
$autoloader_handler = $container->get( Autoloader_Handler::class );
|
||||
|
||||
// If the autoloader is already initializing it means that it has included us as the latest.
|
||||
$was_included_by_autoloader = $autoloader_handler->is_initializing();
|
||||
|
||||
/** @var Plugin_Locator $plugin_locator */
|
||||
$plugin_locator = $container->get( Plugin_Locator::class );
|
||||
|
||||
/** @var Plugins_Handler $plugins_handler */
|
||||
$plugins_handler = $container->get( Plugins_Handler::class );
|
||||
|
||||
// The current plugin is the one that we are attempting to initialize here.
|
||||
$current_plugin = $plugin_locator->find_current_plugin();
|
||||
|
||||
// The active plugins are those that we were able to discover on the site. This list will not
|
||||
// include mu-plugins, those activated by code, or those who are hidden by filtering. We also
|
||||
// want to take care to not consider the current plugin unknown if it was included by an
|
||||
// autoloader. This avoids the case where a plugin will be marked "active" while deactivated
|
||||
// due to it having the latest autoloader.
|
||||
$active_plugins = $plugins_handler->get_active_plugins( true, ! $was_included_by_autoloader );
|
||||
|
||||
// The cached plugins are all of those that were active or discovered by the autoloader during a previous request.
|
||||
// Note that it's possible this list will include plugins that have since been deactivated, but after a request
|
||||
// the cache should be updated and the deactivated plugins will be removed.
|
||||
$cached_plugins = $plugins_handler->get_cached_plugins();
|
||||
|
||||
// We combine the active list and cached list to preemptively load classes for plugins that are
|
||||
// presently unknown but will be loaded during the request. While this may result in us considering packages in
|
||||
// deactivated plugins there shouldn't be any problems as a result and the eventual consistency is sufficient.
|
||||
$all_plugins = array_merge( $active_plugins, $cached_plugins );
|
||||
|
||||
// In particular we also include the current plugin to address the case where it is the latest autoloader
|
||||
// but also unknown (and not cached). We don't want it in the active list because we don't know that it
|
||||
// is active but we need it in the all plugins list so that it is considered by the autoloader.
|
||||
$all_plugins[] = $current_plugin;
|
||||
|
||||
// We require uniqueness in the array to avoid processing the same plugin more than once.
|
||||
$all_plugins = array_values( array_unique( $all_plugins ) );
|
||||
|
||||
/** @var Latest_Autoloader_Guard $guard */
|
||||
$guard = $container->get( Latest_Autoloader_Guard::class );
|
||||
if ( $guard->should_stop_init( $current_plugin, $all_plugins, $was_included_by_autoloader ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize the autoloader using the handler now that we're ready.
|
||||
$autoloader_handler->activate_autoloader( $all_plugins );
|
||||
|
||||
/** @var Hook_Manager $hook_manager */
|
||||
$hook_manager = $container->get( Hook_Manager::class );
|
||||
|
||||
// Register a shutdown handler to clean up the autoloader.
|
||||
$hook_manager->add_action( 'shutdown', new Shutdown_Handler( $plugins_handler, $cached_plugins, $was_included_by_autoloader ) );
|
||||
|
||||
// Register a plugins_loaded handler to check for conflicting autoloaders.
|
||||
$hook_manager->add_action( 'plugins_loaded', array( $guard, 'check_for_conflicting_autoloaders' ), 1 );
|
||||
|
||||
// phpcs:enable Generic.Commenting.DocComment.MissingShort
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class manages the files and dependencies of the autoloader.
|
||||
*/
|
||||
class Container {
|
||||
|
||||
/**
|
||||
* Since each autoloader's class files exist within their own namespace we need a map to
|
||||
* convert between the local class and a shared key. Note that no version checking is
|
||||
* performed on these dependencies and the first autoloader to register will be the
|
||||
* one that is utilized.
|
||||
*/
|
||||
const SHARED_DEPENDENCY_KEYS = array(
|
||||
Hook_Manager::class => 'Hook_Manager',
|
||||
);
|
||||
|
||||
/**
|
||||
* A map of all the dependencies we've registered with the container and created.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $dependencies;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->dependencies = array();
|
||||
|
||||
$this->register_shared_dependencies();
|
||||
$this->register_dependencies();
|
||||
$this->initialize_globals();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a dependency out of the container.
|
||||
*
|
||||
* @param string $class The class to fetch.
|
||||
*
|
||||
* @return mixed
|
||||
* @throws \InvalidArgumentException When a class that isn't registered with the container is fetched.
|
||||
*/
|
||||
public function get( $class ) {
|
||||
if ( ! isset( $this->dependencies[ $class ] ) ) {
|
||||
throw new \InvalidArgumentException( "Class '$class' is not registered with the container." );
|
||||
}
|
||||
|
||||
return $this->dependencies[ $class ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers all of the dependencies that are shared between all instances of the autoloader.
|
||||
*/
|
||||
private function register_shared_dependencies() {
|
||||
global $jetpack_autoloader_container_shared;
|
||||
if ( ! isset( $jetpack_autoloader_container_shared ) ) {
|
||||
$jetpack_autoloader_container_shared = array();
|
||||
}
|
||||
|
||||
$key = self::SHARED_DEPENDENCY_KEYS[ Hook_Manager::class ];
|
||||
if ( ! isset( $jetpack_autoloader_container_shared[ $key ] ) ) {
|
||||
require_once __DIR__ . '/class-hook-manager.php';
|
||||
$jetpack_autoloader_container_shared[ $key ] = new Hook_Manager();
|
||||
}
|
||||
$this->dependencies[ Hook_Manager::class ] = &$jetpack_autoloader_container_shared[ $key ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers all of the dependencies with the container.
|
||||
*/
|
||||
private function register_dependencies() {
|
||||
require_once __DIR__ . '/class-path-processor.php';
|
||||
$this->dependencies[ Path_Processor::class ] = new Path_Processor();
|
||||
|
||||
require_once __DIR__ . '/class-plugin-locator.php';
|
||||
$this->dependencies[ Plugin_Locator::class ] = new Plugin_Locator(
|
||||
$this->get( Path_Processor::class )
|
||||
);
|
||||
|
||||
require_once __DIR__ . '/class-version-selector.php';
|
||||
$this->dependencies[ Version_Selector::class ] = new Version_Selector();
|
||||
|
||||
require_once __DIR__ . '/class-autoloader-locator.php';
|
||||
$this->dependencies[ Autoloader_Locator::class ] = new Autoloader_Locator(
|
||||
$this->get( Version_Selector::class )
|
||||
);
|
||||
|
||||
require_once __DIR__ . '/class-php-autoloader.php';
|
||||
$this->dependencies[ PHP_Autoloader::class ] = new PHP_Autoloader();
|
||||
|
||||
require_once __DIR__ . '/class-manifest-reader.php';
|
||||
$this->dependencies[ Manifest_Reader::class ] = new Manifest_Reader(
|
||||
$this->get( Version_Selector::class )
|
||||
);
|
||||
|
||||
require_once __DIR__ . '/class-plugins-handler.php';
|
||||
$this->dependencies[ Plugins_Handler::class ] = new Plugins_Handler(
|
||||
$this->get( Plugin_Locator::class ),
|
||||
$this->get( Path_Processor::class )
|
||||
);
|
||||
|
||||
require_once __DIR__ . '/class-autoloader-handler.php';
|
||||
$this->dependencies[ Autoloader_Handler::class ] = new Autoloader_Handler(
|
||||
$this->get( PHP_Autoloader::class ),
|
||||
$this->get( Hook_Manager::class ),
|
||||
$this->get( Manifest_Reader::class ),
|
||||
$this->get( Version_Selector::class )
|
||||
);
|
||||
|
||||
require_once __DIR__ . '/class-latest-autoloader-guard.php';
|
||||
$this->dependencies[ Latest_Autoloader_Guard::class ] = new Latest_Autoloader_Guard(
|
||||
$this->get( Plugins_Handler::class ),
|
||||
$this->get( Autoloader_Handler::class ),
|
||||
$this->get( Autoloader_Locator::class )
|
||||
);
|
||||
|
||||
// Register any classes that we will use elsewhere.
|
||||
require_once __DIR__ . '/class-version-loader.php';
|
||||
require_once __DIR__ . '/class-shutdown-handler.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes any of the globals needed by the autoloader.
|
||||
*/
|
||||
private function initialize_globals() {
|
||||
/*
|
||||
* This global was retired in version 2.9. The value is set to 'false' to maintain
|
||||
* compatibility with older versions of the autoloader.
|
||||
*/
|
||||
global $jetpack_autoloader_including_latest;
|
||||
$jetpack_autoloader_including_latest = false;
|
||||
|
||||
// Not all plugins can be found using the locator. In cases where a plugin loads the autoloader
|
||||
// but was not discoverable, we will record them in this array to track them as "active".
|
||||
global $jetpack_autoloader_activating_plugins_paths;
|
||||
if ( ! isset( $jetpack_autoloader_activating_plugins_paths ) ) {
|
||||
$jetpack_autoloader_activating_plugins_paths = array();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* Allows the latest autoloader to register hooks that can be removed when the autoloader is reset.
|
||||
*/
|
||||
class Hook_Manager {
|
||||
|
||||
/**
|
||||
* An array containing all of the hooks that we've registered.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $registered_hooks;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->registered_hooks = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an action to WordPress and registers it internally.
|
||||
*
|
||||
* @param string $tag The name of the action which is hooked.
|
||||
* @param callable $callable The function to call.
|
||||
* @param int $priority Used to specify the priority of the action.
|
||||
* @param int $accepted_args Used to specify the number of arguments the callable accepts.
|
||||
*/
|
||||
public function add_action( $tag, $callable, $priority = 10, $accepted_args = 1 ) {
|
||||
$this->registered_hooks[ $tag ][] = array(
|
||||
'priority' => $priority,
|
||||
'callable' => $callable,
|
||||
);
|
||||
|
||||
add_action( $tag, $callable, $priority, $accepted_args );
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a filter to WordPress and registers it internally.
|
||||
*
|
||||
* @param string $tag The name of the filter which is hooked.
|
||||
* @param callable $callable The function to call.
|
||||
* @param int $priority Used to specify the priority of the filter.
|
||||
* @param int $accepted_args Used to specify the number of arguments the callable accepts.
|
||||
*/
|
||||
public function add_filter( $tag, $callable, $priority = 10, $accepted_args = 1 ) {
|
||||
$this->registered_hooks[ $tag ][] = array(
|
||||
'priority' => $priority,
|
||||
'callable' => $callable,
|
||||
);
|
||||
|
||||
add_filter( $tag, $callable, $priority, $accepted_args );
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all of the registered hooks.
|
||||
*/
|
||||
public function reset() {
|
||||
foreach ( $this->registered_hooks as $tag => $hooks ) {
|
||||
foreach ( $hooks as $hook ) {
|
||||
remove_filter( $tag, $hook['callable'], $hook['priority'] );
|
||||
}
|
||||
}
|
||||
$this->registered_hooks = array();
|
||||
}
|
||||
}
|
||||
+165
@@ -0,0 +1,165 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class ensures that we're only executing the latest autoloader.
|
||||
*/
|
||||
class Latest_Autoloader_Guard {
|
||||
|
||||
/**
|
||||
* The Plugins_Handler instance.
|
||||
*
|
||||
* @var Plugins_Handler
|
||||
*/
|
||||
private $plugins_handler;
|
||||
|
||||
/**
|
||||
* The Autoloader_Handler instance.
|
||||
*
|
||||
* @var Autoloader_Handler
|
||||
*/
|
||||
private $autoloader_handler;
|
||||
|
||||
/**
|
||||
* The Autoloader_locator instance.
|
||||
*
|
||||
* @var Autoloader_Locator
|
||||
*/
|
||||
private $autoloader_locator;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param Plugins_Handler $plugins_handler The Plugins_Handler instance.
|
||||
* @param Autoloader_Handler $autoloader_handler The Autoloader_Handler instance.
|
||||
* @param Autoloader_Locator $autoloader_locator The Autoloader_Locator instance.
|
||||
*/
|
||||
public function __construct( $plugins_handler, $autoloader_handler, $autoloader_locator ) {
|
||||
$this->plugins_handler = $plugins_handler;
|
||||
$this->autoloader_handler = $autoloader_handler;
|
||||
$this->autoloader_locator = $autoloader_locator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether or not the autoloader should be initialized. Note that this function
|
||||
* has the side-effect of actually loading the latest autoloader in the event that this
|
||||
* is not it.
|
||||
*
|
||||
* @param string $current_plugin The current plugin we're checking.
|
||||
* @param string[] $plugins The active plugins to check for autoloaders in.
|
||||
* @param bool $was_included_by_autoloader Indicates whether or not this autoloader was included by another.
|
||||
*
|
||||
* @return bool True if we should stop initialization, otherwise false.
|
||||
*/
|
||||
public function should_stop_init( $current_plugin, $plugins, $was_included_by_autoloader ) {
|
||||
global $jetpack_autoloader_latest_version;
|
||||
|
||||
// We need to reset the autoloader when the plugins change because
|
||||
// that means the autoloader was generated with a different list.
|
||||
if ( $this->plugins_handler->have_plugins_changed( $plugins ) ) {
|
||||
$this->autoloader_handler->reset_autoloader();
|
||||
}
|
||||
|
||||
// When the latest autoloader has already been found we don't need to search for it again.
|
||||
// We should take care however because this will also trigger if the autoloader has been
|
||||
// included by an older one.
|
||||
if ( isset( $jetpack_autoloader_latest_version ) && ! $was_included_by_autoloader ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$latest_plugin = $this->autoloader_locator->find_latest_autoloader( $plugins, $jetpack_autoloader_latest_version );
|
||||
if ( isset( $latest_plugin ) && $latest_plugin !== $current_plugin ) {
|
||||
require $this->autoloader_locator->get_autoloader_path( $latest_plugin );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for conflicting autoloaders.
|
||||
*
|
||||
* A common source of strange and confusing problems is when another plugin
|
||||
* registers a Composer autoloader at a higher priority that us. If enabled,
|
||||
* check for this problem and warn about it.
|
||||
*
|
||||
* Called from the plugins_loaded hook.
|
||||
*
|
||||
* @since 3.1.0
|
||||
* @return void
|
||||
*/
|
||||
public function check_for_conflicting_autoloaders() {
|
||||
if ( ! defined( 'JETPACK_AUTOLOAD_DEBUG_CONFLICTING_LOADERS' ) || ! JETPACK_AUTOLOAD_DEBUG_CONFLICTING_LOADERS ) {
|
||||
return;
|
||||
}
|
||||
|
||||
global $jetpack_autoloader_loader;
|
||||
if ( ! isset( $jetpack_autoloader_loader ) ) {
|
||||
return;
|
||||
}
|
||||
$prefixes = array();
|
||||
foreach ( ( $jetpack_autoloader_loader->get_class_map() ?? array() ) as $classname => $data ) {
|
||||
$parts = explode( '\\', trim( $classname, '\\' ) );
|
||||
array_pop( $parts );
|
||||
while ( $parts ) {
|
||||
$prefixes[ implode( '\\', $parts ) . '\\' ] = true;
|
||||
array_pop( $parts );
|
||||
}
|
||||
}
|
||||
foreach ( ( $jetpack_autoloader_loader->get_psr4_map() ?? array() ) as $prefix => $data ) {
|
||||
$parts = explode( '\\', trim( $prefix, '\\' ) );
|
||||
while ( $parts ) {
|
||||
$prefixes[ implode( '\\', $parts ) . '\\' ] = true;
|
||||
array_pop( $parts );
|
||||
}
|
||||
}
|
||||
|
||||
$autoload_chain = spl_autoload_functions();
|
||||
if ( ! $autoload_chain ) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ( $autoload_chain as $autoloader ) {
|
||||
// No need to check anything after us.
|
||||
if ( is_array( $autoloader ) && is_string( $autoloader[0] ) && substr( $autoloader[0], 0, strlen( __NAMESPACE__ ) + 1 ) === __NAMESPACE__ . '\\' ) {
|
||||
break;
|
||||
}
|
||||
|
||||
// We can check Composer autoloaders easily enough.
|
||||
if ( is_array( $autoloader ) && $autoloader[0] instanceof \Composer\Autoload\ClassLoader && is_callable( array( $autoloader[0], 'getPrefixesPsr4' ) ) ) {
|
||||
$composer_autoloader = $autoloader[0];
|
||||
foreach ( $composer_autoloader->getClassMap() as $classname => $path ) {
|
||||
if ( $jetpack_autoloader_loader->find_class_file( $classname ) ) {
|
||||
$msg = "A Composer autoloader is registered with a higher priority than the Jetpack Autoloader and would also handle some of the classes we handle (e.g. $classname => $path). This may cause strange and confusing problems.";
|
||||
wp_trigger_error( '', $msg );
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
foreach ( $composer_autoloader->getPrefixesPsr4() as $prefix => $paths ) {
|
||||
if ( isset( $prefixes[ $prefix ] ) ) {
|
||||
$path = array_pop( $paths );
|
||||
$msg = "A Composer autoloader is registered with a higher priority than the Jetpack Autoloader and would also handle some of the namespaces we handle (e.g. $prefix => $path). This may cause strange and confusing problems.";
|
||||
wp_trigger_error( '', $msg );
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
foreach ( $composer_autoloader->getPrefixes() as $prefix => $paths ) {
|
||||
if ( isset( $prefixes[ $prefix ] ) ) {
|
||||
$path = array_pop( $paths );
|
||||
$msg = "A Composer autoloader is registered with a higher priority than the Jetpack Autoloader and would also handle some of the namespaces we handle (e.g. $prefix => $path). This may cause strange and confusing problems.";
|
||||
wp_trigger_error( '', $msg );
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class reads autoloader manifest files.
|
||||
*/
|
||||
class Manifest_Reader {
|
||||
|
||||
/**
|
||||
* The Version_Selector object.
|
||||
*
|
||||
* @var Version_Selector
|
||||
*/
|
||||
private $version_selector;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param Version_Selector $version_selector The Version_Selector object.
|
||||
*/
|
||||
public function __construct( $version_selector ) {
|
||||
$this->version_selector = $version_selector;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads all of the manifests in the given plugin paths.
|
||||
*
|
||||
* @param array $plugin_paths The paths to the plugins we're loading the manifest in.
|
||||
* @param string $manifest_path The path that we're loading the manifest from in each plugin.
|
||||
* @param array $path_map The path map to add the contents of the manifests to.
|
||||
*
|
||||
* @return array $path_map The path map we've built using the manifests in each plugin.
|
||||
*/
|
||||
public function read_manifests( $plugin_paths, $manifest_path, &$path_map ) {
|
||||
$file_paths = array_map(
|
||||
function ( $path ) use ( $manifest_path ) {
|
||||
return trailingslashit( $path ) . $manifest_path;
|
||||
},
|
||||
$plugin_paths
|
||||
);
|
||||
|
||||
foreach ( $file_paths as $path ) {
|
||||
$this->register_manifest( $path, $path_map );
|
||||
}
|
||||
|
||||
return $path_map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a plugin's manifest file with the path map.
|
||||
*
|
||||
* @param string $manifest_path The absolute path to the manifest that we're loading.
|
||||
* @param array $path_map The path map to add the contents of the manifest to.
|
||||
*/
|
||||
protected function register_manifest( $manifest_path, &$path_map ) {
|
||||
if ( ! is_readable( $manifest_path ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$manifest = require $manifest_path;
|
||||
if ( ! is_array( $manifest ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ( $manifest as $key => $data ) {
|
||||
$this->register_record( $key, $data, $path_map );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an entry from the manifest in the path map.
|
||||
*
|
||||
* @param string $key The identifier for the entry we're registering.
|
||||
* @param array $data The data for the entry we're registering.
|
||||
* @param array $path_map The path map to add the contents of the manifest to.
|
||||
*/
|
||||
protected function register_record( $key, $data, &$path_map ) {
|
||||
if ( isset( $path_map[ $key ]['version'] ) ) {
|
||||
$selected_version = $path_map[ $key ]['version'];
|
||||
} else {
|
||||
$selected_version = null;
|
||||
}
|
||||
|
||||
if ( $this->version_selector->is_version_update_required( $selected_version, $data['version'] ) ) {
|
||||
$path_map[ $key ] = array(
|
||||
'version' => $data['version'],
|
||||
'path' => $data['path'],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
+194
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class handles dealing with paths for the autoloader.
|
||||
*/
|
||||
class Path_Processor {
|
||||
/**
|
||||
* Given a path this will replace any of the path constants with a token to represent it.
|
||||
*
|
||||
* @param string $path The path we want to process.
|
||||
*
|
||||
* @return string The tokenized path.
|
||||
*/
|
||||
public function tokenize_path_constants( $path ) {
|
||||
$path = wp_normalize_path( $path );
|
||||
|
||||
$constants = $this->get_normalized_constants();
|
||||
foreach ( $constants as $constant => $constant_path ) {
|
||||
$len = strlen( $constant_path );
|
||||
if ( substr( $path, 0, $len ) !== $constant_path ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return substr_replace( $path, '{{' . $constant . '}}', 0, $len );
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a path this will replace any of the path constant tokens with the expanded path.
|
||||
*
|
||||
* @param string $tokenized_path The path we want to process.
|
||||
*
|
||||
* @return string The expanded path.
|
||||
*/
|
||||
public function untokenize_path_constants( $tokenized_path ) {
|
||||
$tokenized_path = wp_normalize_path( $tokenized_path );
|
||||
|
||||
$constants = $this->get_normalized_constants();
|
||||
foreach ( $constants as $constant => $constant_path ) {
|
||||
$constant = '{{' . $constant . '}}';
|
||||
|
||||
$len = strlen( $constant );
|
||||
if ( substr( $tokenized_path, 0, $len ) !== $constant ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return $this->get_real_path( substr_replace( $tokenized_path, $constant_path, 0, $len ) );
|
||||
}
|
||||
|
||||
return $tokenized_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a file and an array of places it might be, this will find the absolute path and return it.
|
||||
*
|
||||
* @param string $file The plugin or theme file to resolve.
|
||||
* @param array $directories_to_check The directories we should check for the file if it isn't an absolute path.
|
||||
*
|
||||
* @return string|false Returns the absolute path to the directory, otherwise false.
|
||||
*/
|
||||
public function find_directory_with_autoloader( $file, $directories_to_check ) {
|
||||
$file = wp_normalize_path( $file );
|
||||
|
||||
if ( ! $this->is_absolute_path( $file ) ) {
|
||||
$file = $this->find_absolute_plugin_path( $file, $directories_to_check );
|
||||
if ( ! isset( $file ) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// We need the real path for consistency with __DIR__ paths.
|
||||
$file = $this->get_real_path( $file );
|
||||
|
||||
// phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged
|
||||
$directory = @is_file( $file ) ? dirname( $file ) : $file;
|
||||
if ( ! @is_file( $directory . '/vendor/composer/jetpack_autoload_classmap.php' ) ) {
|
||||
return false;
|
||||
}
|
||||
// phpcs:enable WordPress.PHP.NoSilencedErrors.Discouraged
|
||||
|
||||
return $directory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches an array of normalized paths keyed by the constant they came from.
|
||||
*
|
||||
* @return string[] The normalized paths keyed by the constant.
|
||||
*/
|
||||
private function get_normalized_constants() {
|
||||
$raw_constants = array(
|
||||
// Order the constants from most-specific to least-specific.
|
||||
'WP_PLUGIN_DIR',
|
||||
'WPMU_PLUGIN_DIR',
|
||||
'WP_CONTENT_DIR',
|
||||
'ABSPATH',
|
||||
);
|
||||
|
||||
$constants = array();
|
||||
foreach ( $raw_constants as $raw ) {
|
||||
if ( ! defined( $raw ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$path = wp_normalize_path( constant( $raw ) );
|
||||
if ( isset( $path ) ) {
|
||||
$constants[ $raw ] = $path;
|
||||
}
|
||||
}
|
||||
|
||||
return $constants;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether or not a path is absolute.
|
||||
*
|
||||
* @param string $path The path to check.
|
||||
*
|
||||
* @return bool True if the path is absolute, otherwise false.
|
||||
*/
|
||||
private function is_absolute_path( $path ) {
|
||||
if ( empty( $path ) || 0 === strlen( $path ) || '.' === $path[0] ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Absolute paths on Windows may begin with a drive letter.
|
||||
if ( preg_match( '/^[a-zA-Z]:[\/\\\\]/', $path ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// A path starting with / or \ is absolute; anything else is relative.
|
||||
return ( '/' === $path[0] || '\\' === $path[0] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a file and a list of directories to check, this method will try to figure out
|
||||
* the absolute path to the file in question.
|
||||
*
|
||||
* @param string $normalized_path The normalized path to the plugin or theme file to resolve.
|
||||
* @param array $directories_to_check The directories we should check for the file if it isn't an absolute path.
|
||||
*
|
||||
* @return string|null The absolute path to the plugin file, otherwise null.
|
||||
*/
|
||||
private function find_absolute_plugin_path( $normalized_path, $directories_to_check ) {
|
||||
// We're only able to find the absolute path for plugin/theme PHP files.
|
||||
if ( ! is_string( $normalized_path ) || '.php' !== substr( $normalized_path, -4 ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach ( $directories_to_check as $directory ) {
|
||||
$normalized_check = wp_normalize_path( trailingslashit( $directory ) ) . $normalized_path;
|
||||
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
|
||||
if ( @is_file( $normalized_check ) ) {
|
||||
return $normalized_check;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a path this will figure out the real path that we should be using.
|
||||
*
|
||||
* @param string $path The path to resolve.
|
||||
*
|
||||
* @return string The resolved path.
|
||||
*/
|
||||
private function get_real_path( $path ) {
|
||||
// We want to resolve symbolic links for consistency with __DIR__ paths.
|
||||
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
|
||||
$real_path = @realpath( $path );
|
||||
if ( false === $real_path ) {
|
||||
// Let the autoloader deal with paths that don't exist.
|
||||
$real_path = $path;
|
||||
}
|
||||
|
||||
// Using realpath will make it platform-specific so we must normalize it after.
|
||||
if ( $path !== $real_path ) {
|
||||
$real_path = wp_normalize_path( $real_path );
|
||||
}
|
||||
|
||||
return $real_path;
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class handles management of the actual PHP autoloader.
|
||||
*/
|
||||
class PHP_Autoloader {
|
||||
|
||||
/**
|
||||
* Registers the autoloader with PHP so that it can begin autoloading classes.
|
||||
*
|
||||
* @param Version_Loader $version_loader The class loader to use in the autoloader.
|
||||
*/
|
||||
public function register_autoloader( $version_loader ) {
|
||||
// Make sure no other autoloaders are registered.
|
||||
$this->unregister_autoloader();
|
||||
|
||||
// Set the global so that it can be used to load classes.
|
||||
global $jetpack_autoloader_loader;
|
||||
$jetpack_autoloader_loader = $version_loader;
|
||||
|
||||
// Ensure that the autoloader is first to avoid contention with others.
|
||||
spl_autoload_register( array( self::class, 'load_class' ), true, true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters the active autoloader so that it will no longer autoload classes.
|
||||
*/
|
||||
public function unregister_autoloader() {
|
||||
// Remove any v2 autoloader that we've already registered.
|
||||
$autoload_chain = spl_autoload_functions();
|
||||
if ( ! $autoload_chain ) {
|
||||
return;
|
||||
}
|
||||
foreach ( $autoload_chain as $autoloader ) {
|
||||
// We can identify a v2 autoloader using the namespace.
|
||||
$namespace_check = null;
|
||||
|
||||
// Functions are recorded as strings.
|
||||
if ( is_string( $autoloader ) ) {
|
||||
$namespace_check = $autoloader;
|
||||
} elseif ( is_array( $autoloader ) && is_string( $autoloader[0] ) ) {
|
||||
// Static method calls have the class as the first array element.
|
||||
$namespace_check = $autoloader[0];
|
||||
} else {
|
||||
// Since the autoloader has only ever been a function or a static method we don't currently need to check anything else.
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check for the namespace without the generated suffix.
|
||||
if ( 'Automattic\\Jetpack\\Autoloader\\jp' === substr( $namespace_check, 0, 32 ) ) {
|
||||
spl_autoload_unregister( $autoloader );
|
||||
}
|
||||
}
|
||||
|
||||
// Clear the global now that the autoloader has been unregistered.
|
||||
global $jetpack_autoloader_loader;
|
||||
$jetpack_autoloader_loader = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads a class file if one could be found.
|
||||
*
|
||||
* Note: This function is static so that the autoloader can be easily unregistered. If
|
||||
* it was a class method we would have to unwrap the object to check the namespace.
|
||||
*
|
||||
* @param string $class_name The name of the class to autoload.
|
||||
*
|
||||
* @return bool Indicates whether or not a class file was loaded.
|
||||
*/
|
||||
public static function load_class( $class_name ) {
|
||||
global $jetpack_autoloader_loader;
|
||||
if ( ! isset( $jetpack_autoloader_loader ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$file = $jetpack_autoloader_loader->find_class_file( $class_name );
|
||||
if ( ! isset( $file ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// A common source of strange and confusing problems is when a vendor
|
||||
// file is autoloaded before all plugins have had a chance to register
|
||||
// with the autoloader. Detect that, if a development constant is set.
|
||||
if ( defined( 'JETPACK_AUTOLOAD_DEBUG_EARLY_LOADS' ) && JETPACK_AUTOLOAD_DEBUG_EARLY_LOADS &&
|
||||
( strpos( $file, '/vendor/' ) !== false || strpos( $file, '/jetpack_vendor/' ) !== false ) &&
|
||||
is_callable( 'did_action' ) && ! did_action( 'plugins_loaded' )
|
||||
) {
|
||||
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_wp_debug_backtrace_summary -- This is a debug log message.
|
||||
$msg = "Jetpack Autoloader: Autoloading `$class_name` before the plugins_loaded hook may cause strange and confusing problems. " . wp_debug_backtrace_summary( '', 1 );
|
||||
wp_trigger_error( '', $msg );
|
||||
}
|
||||
|
||||
require $file;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+153
@@ -0,0 +1,153 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class scans the WordPress installation to find active plugins.
|
||||
*/
|
||||
class Plugin_Locator {
|
||||
|
||||
/**
|
||||
* The path processor for finding plugin paths.
|
||||
*
|
||||
* @var Path_Processor
|
||||
*/
|
||||
private $path_processor;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param Path_Processor $path_processor The Path_Processor instance.
|
||||
*/
|
||||
public function __construct( $path_processor ) {
|
||||
$this->path_processor = $path_processor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the current plugin.
|
||||
*
|
||||
* @return string $path The path to the current plugin.
|
||||
*
|
||||
* @throws \RuntimeException If the current plugin does not have an autoloader.
|
||||
*/
|
||||
public function find_current_plugin() {
|
||||
// Escape from `vendor/__DIR__` to root plugin directory.
|
||||
$plugin_directory = dirname( __DIR__, 2 );
|
||||
|
||||
// Use the path processor to ensure that this is an autoloader we're referencing.
|
||||
$path = $this->path_processor->find_directory_with_autoloader( $plugin_directory, array() );
|
||||
if ( false === $path ) {
|
||||
throw new \RuntimeException( 'Failed to locate plugin ' . $plugin_directory );
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks a given option for plugin paths.
|
||||
*
|
||||
* @param string $option_name The option that we want to check for plugin information.
|
||||
* @param bool $site_option Indicates whether or not we want to check the site option.
|
||||
*
|
||||
* @return array $plugin_paths The list of absolute paths we've found.
|
||||
*/
|
||||
public function find_using_option( $option_name, $site_option = false ) {
|
||||
$raw = $site_option ? get_site_option( $option_name ) : get_option( $option_name );
|
||||
if ( false === $raw ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
return $this->convert_plugins_to_paths( $raw );
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for plugins in the `action` request parameter.
|
||||
*
|
||||
* @param string[] $allowed_actions The actions that we're allowed to return plugins for.
|
||||
*
|
||||
* @return array $plugin_paths The list of absolute paths we've found.
|
||||
*/
|
||||
public function find_using_request_action( $allowed_actions ) {
|
||||
/**
|
||||
* Note: we're not actually checking the nonce here because it's too early
|
||||
* in the execution. The pluggable functions are not yet loaded to give
|
||||
* plugins a chance to plug their versions. Therefore we're doing the bare
|
||||
* minimum: checking whether the nonce exists and it's in the right place.
|
||||
* The request will fail later if the nonce doesn't pass the check.
|
||||
*/
|
||||
if ( empty( $_REQUEST['_wpnonce'] ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated just below.
|
||||
$action = isset( $_REQUEST['action'] ) ? wp_unslash( $_REQUEST['action'] ) : false;
|
||||
if ( ! in_array( $action, $allowed_actions, true ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$plugin_slugs = array();
|
||||
switch ( $action ) {
|
||||
case 'activate':
|
||||
case 'deactivate':
|
||||
if ( empty( $_REQUEST['plugin'] ) ) {
|
||||
break;
|
||||
}
|
||||
|
||||
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated by convert_plugins_to_paths.
|
||||
$plugin_slugs[] = wp_unslash( $_REQUEST['plugin'] );
|
||||
break;
|
||||
|
||||
case 'activate-selected':
|
||||
case 'deactivate-selected':
|
||||
if ( empty( $_REQUEST['checked'] ) ) {
|
||||
break;
|
||||
}
|
||||
|
||||
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated by convert_plugins_to_paths.
|
||||
$plugin_slugs = wp_unslash( $_REQUEST['checked'] );
|
||||
break;
|
||||
}
|
||||
|
||||
return $this->convert_plugins_to_paths( $plugin_slugs );
|
||||
}
|
||||
|
||||
/**
|
||||
* Given an array of plugin slugs or paths, this will convert them to absolute paths and filter
|
||||
* out the plugins that are not directory plugins. Note that array keys will also be included
|
||||
* if they are plugin paths!
|
||||
*
|
||||
* @param string[] $plugins Plugin paths or slugs to filter.
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
private function convert_plugins_to_paths( $plugins ) {
|
||||
if ( ! is_array( $plugins ) || empty( $plugins ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
// We're going to look for plugins in the standard directories.
|
||||
$path_constants = array( WP_PLUGIN_DIR, WPMU_PLUGIN_DIR );
|
||||
|
||||
$plugin_paths = array();
|
||||
foreach ( $plugins as $key => $value ) {
|
||||
$path = $this->path_processor->find_directory_with_autoloader( $key, $path_constants );
|
||||
if ( $path ) {
|
||||
$plugin_paths[] = $path;
|
||||
}
|
||||
|
||||
$path = $this->path_processor->find_directory_with_autoloader( $value, $path_constants );
|
||||
if ( $path ) {
|
||||
$plugin_paths[] = $path;
|
||||
}
|
||||
}
|
||||
|
||||
return $plugin_paths;
|
||||
}
|
||||
}
|
||||
+164
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class handles locating and caching all of the active plugins.
|
||||
*/
|
||||
class Plugins_Handler {
|
||||
/**
|
||||
* The transient key for plugin paths.
|
||||
*/
|
||||
const TRANSIENT_KEY = 'jetpack_autoloader_plugin_paths';
|
||||
|
||||
/**
|
||||
* The locator for finding plugins in different locations.
|
||||
*
|
||||
* @var Plugin_Locator
|
||||
*/
|
||||
private $plugin_locator;
|
||||
|
||||
/**
|
||||
* The processor for transforming cached paths.
|
||||
*
|
||||
* @var Path_Processor
|
||||
*/
|
||||
private $path_processor;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param Plugin_Locator $plugin_locator The locator for finding active plugins.
|
||||
* @param Path_Processor $path_processor The processor for transforming cached paths.
|
||||
*/
|
||||
public function __construct( $plugin_locator, $path_processor ) {
|
||||
$this->plugin_locator = $plugin_locator;
|
||||
$this->path_processor = $path_processor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all of the active plugins we can find.
|
||||
*
|
||||
* @param bool $include_deactivating When true, plugins deactivating this request will be considered active.
|
||||
* @param bool $record_unknown When true, the current plugin will be marked as active and recorded when unknown.
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function get_active_plugins( $include_deactivating, $record_unknown ) {
|
||||
global $jetpack_autoloader_activating_plugins_paths;
|
||||
|
||||
// We're going to build a unique list of plugins from a few different sources
|
||||
// to find all of our "active" plugins. While we need to return an integer
|
||||
// array, we're going to use an associative array internally to reduce
|
||||
// the amount of time that we're going to spend checking uniqueness
|
||||
// and merging different arrays together to form the output.
|
||||
$active_plugins = array();
|
||||
|
||||
// Make sure that plugins which have activated this request are considered as "active" even though
|
||||
// they probably won't be present in any option.
|
||||
if ( is_array( $jetpack_autoloader_activating_plugins_paths ) ) {
|
||||
foreach ( $jetpack_autoloader_activating_plugins_paths as $path ) {
|
||||
$active_plugins[ $path ] = $path;
|
||||
}
|
||||
}
|
||||
|
||||
// This option contains all of the plugins that have been activated.
|
||||
$plugins = $this->plugin_locator->find_using_option( 'active_plugins' );
|
||||
foreach ( $plugins as $path ) {
|
||||
$active_plugins[ $path ] = $path;
|
||||
}
|
||||
|
||||
// This option contains all of the multisite plugins that have been activated.
|
||||
if ( is_multisite() ) {
|
||||
$plugins = $this->plugin_locator->find_using_option( 'active_sitewide_plugins', true );
|
||||
foreach ( $plugins as $path ) {
|
||||
$active_plugins[ $path ] = $path;
|
||||
}
|
||||
}
|
||||
|
||||
// These actions contain plugins that are being activated/deactivated during this request.
|
||||
$plugins = $this->plugin_locator->find_using_request_action( array( 'activate', 'activate-selected', 'deactivate', 'deactivate-selected' ) );
|
||||
foreach ( $plugins as $path ) {
|
||||
$active_plugins[ $path ] = $path;
|
||||
}
|
||||
|
||||
// When the current plugin isn't considered "active" there's a problem.
|
||||
// Since we're here, the plugin is active and currently being loaded.
|
||||
// We can support this case (mu-plugins and non-standard activation)
|
||||
// by adding the current plugin to the active list and marking it
|
||||
// as an unknown (activating) plugin. This also has the benefit
|
||||
// of causing a reset because the active plugins list has
|
||||
// been changed since it was saved in the global.
|
||||
$current_plugin = $this->plugin_locator->find_current_plugin();
|
||||
if ( $record_unknown && ! in_array( $current_plugin, $active_plugins, true ) ) {
|
||||
$active_plugins[ $current_plugin ] = $current_plugin;
|
||||
$jetpack_autoloader_activating_plugins_paths[] = $current_plugin;
|
||||
}
|
||||
|
||||
// When deactivating plugins aren't desired we should entirely remove them from the active list.
|
||||
if ( ! $include_deactivating ) {
|
||||
// These actions contain plugins that are being deactivated during this request.
|
||||
$plugins = $this->plugin_locator->find_using_request_action( array( 'deactivate', 'deactivate-selected' ) );
|
||||
foreach ( $plugins as $path ) {
|
||||
unset( $active_plugins[ $path ] );
|
||||
}
|
||||
}
|
||||
|
||||
// Transform the array so that we don't have to worry about the keys interacting with other array types later.
|
||||
return array_values( $active_plugins );
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all of the cached plugins if there are any.
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function get_cached_plugins() {
|
||||
$cached = get_transient( self::TRANSIENT_KEY );
|
||||
if ( ! is_array( $cached ) || empty( $cached ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
// We need to expand the tokens to an absolute path for this webserver.
|
||||
return array_map( array( $this->path_processor, 'untokenize_path_constants' ), $cached );
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the plugin list to the cache.
|
||||
*
|
||||
* @param array $plugins The plugin list to save to the cache.
|
||||
*/
|
||||
public function cache_plugins( $plugins ) {
|
||||
// We store the paths in a tokenized form so that that webservers with different absolute paths don't break.
|
||||
$plugins = array_map( array( $this->path_processor, 'tokenize_path_constants' ), $plugins );
|
||||
|
||||
set_transient( self::TRANSIENT_KEY, $plugins );
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see whether or not the plugin list given has changed when compared to the
|
||||
* shared `$jetpack_autoloader_cached_plugin_paths` global. This allows us to deal
|
||||
* with cases where the active list may change due to filtering..
|
||||
*
|
||||
* @param string[] $plugins The plugins list to check against the global cache.
|
||||
*
|
||||
* @return bool True if the plugins have changed, otherwise false.
|
||||
*/
|
||||
public function have_plugins_changed( $plugins ) {
|
||||
global $jetpack_autoloader_cached_plugin_paths;
|
||||
|
||||
if ( $jetpack_autoloader_cached_plugin_paths !== $plugins ) {
|
||||
$jetpack_autoloader_cached_plugin_paths = $plugins;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class handles the shutdown of the autoloader.
|
||||
*/
|
||||
class Shutdown_Handler {
|
||||
|
||||
/**
|
||||
* The Plugins_Handler instance.
|
||||
*
|
||||
* @var Plugins_Handler
|
||||
*/
|
||||
private $plugins_handler;
|
||||
|
||||
/**
|
||||
* The plugins cached by this autoloader.
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
private $cached_plugins;
|
||||
|
||||
/**
|
||||
* Indicates whether or not this autoloader was included by another.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $was_included_by_autoloader;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param Plugins_Handler $plugins_handler The Plugins_Handler instance to use.
|
||||
* @param string[] $cached_plugins The plugins cached by the autoloaer.
|
||||
* @param bool $was_included_by_autoloader Indicates whether or not the autoloader was included by another.
|
||||
*/
|
||||
public function __construct( $plugins_handler, $cached_plugins, $was_included_by_autoloader ) {
|
||||
$this->plugins_handler = $plugins_handler;
|
||||
$this->cached_plugins = $cached_plugins;
|
||||
$this->was_included_by_autoloader = $was_included_by_autoloader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the shutdown of the autoloader.
|
||||
*/
|
||||
public function __invoke() {
|
||||
// Don't save a broken cache if an error happens during some plugin's initialization.
|
||||
if ( ! did_action( 'plugins_loaded' ) ) {
|
||||
// Ensure that the cache is emptied to prevent consecutive failures if the cache is to blame.
|
||||
if ( ! empty( $this->cached_plugins ) ) {
|
||||
$this->plugins_handler->cache_plugins( array() );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Load the active plugins fresh since the list we pulled earlier might not contain
|
||||
// plugins that were activated but did not reset the autoloader. This happens
|
||||
// when a plugin is in the cache but not "active" when the autoloader loads.
|
||||
// We also want to make sure that plugins which are deactivating are not
|
||||
// considered "active" so that they will be removed from the cache now.
|
||||
try {
|
||||
$active_plugins = $this->plugins_handler->get_active_plugins( false, ! $this->was_included_by_autoloader );
|
||||
} catch ( \Exception $ex ) {
|
||||
// When the package is deleted before shutdown it will throw an exception.
|
||||
// In the event this happens we should erase the cache.
|
||||
if ( ! empty( $this->cached_plugins ) ) {
|
||||
$this->plugins_handler->cache_plugins( array() );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// The paths should be sorted for easy comparisons with those loaded from the cache.
|
||||
// Note we don't need to sort the cached entries because they're already sorted.
|
||||
sort( $active_plugins );
|
||||
|
||||
// We don't want to waste time saving a cache that hasn't changed.
|
||||
if ( $this->cached_plugins === $active_plugins ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->plugins_handler->cache_plugins( $active_plugins );
|
||||
}
|
||||
}
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* This class loads other classes based on given parameters.
|
||||
*/
|
||||
class Version_Loader {
|
||||
|
||||
/**
|
||||
* The Version_Selector object.
|
||||
*
|
||||
* @var Version_Selector
|
||||
*/
|
||||
private $version_selector;
|
||||
|
||||
/**
|
||||
* A map of available classes and their version and file path.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $classmap;
|
||||
|
||||
/**
|
||||
* A map of PSR-4 namespaces and their version and directory path.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $psr4_map;
|
||||
|
||||
/**
|
||||
* A map of all the files that we should load.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $filemap;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*
|
||||
* @param Version_Selector $version_selector The Version_Selector object.
|
||||
* @param array $classmap The verioned classmap to load using.
|
||||
* @param array $psr4_map The versioned PSR-4 map to load using.
|
||||
* @param array $filemap The versioned filemap to load.
|
||||
*/
|
||||
public function __construct( $version_selector, $classmap, $psr4_map, $filemap ) {
|
||||
$this->version_selector = $version_selector;
|
||||
$this->classmap = $classmap;
|
||||
$this->psr4_map = $psr4_map;
|
||||
$this->filemap = $filemap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the classmap.
|
||||
*
|
||||
* @since 3.1.0
|
||||
* @return array<string, array>
|
||||
*/
|
||||
public function get_class_map() {
|
||||
return $this->classmap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the psr-4 mappings.
|
||||
*
|
||||
* @since 3.1.0
|
||||
* @return array<string, array>
|
||||
*/
|
||||
public function get_psr4_map() {
|
||||
return $this->psr4_map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the file path for the given class.
|
||||
*
|
||||
* @param string $class_name The class to find.
|
||||
*
|
||||
* @return string|null $file_path The path to the file if found, null if no class was found.
|
||||
*/
|
||||
public function find_class_file( $class_name ) {
|
||||
$data = $this->select_newest_file(
|
||||
$this->classmap[ $class_name ] ?? null,
|
||||
$this->find_psr4_file( $class_name )
|
||||
);
|
||||
if ( ! isset( $data ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $data['path'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Load all of the files in the filemap.
|
||||
*/
|
||||
public function load_filemap() {
|
||||
if ( empty( $this->filemap ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ( $this->filemap as $file_identifier => $file_data ) {
|
||||
if ( empty( $GLOBALS['__composer_autoload_files'][ $file_identifier ] ) ) {
|
||||
require_once $file_data['path'];
|
||||
|
||||
$GLOBALS['__composer_autoload_files'][ $file_identifier ] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares different class sources and returns the newest.
|
||||
*
|
||||
* @param array|null $classmap_data The classmap class data.
|
||||
* @param array|null $psr4_data The PSR-4 class data.
|
||||
*
|
||||
* @return array|null $data
|
||||
*/
|
||||
private function select_newest_file( $classmap_data, $psr4_data ) {
|
||||
if ( ! isset( $classmap_data ) ) {
|
||||
return $psr4_data;
|
||||
} elseif ( ! isset( $psr4_data ) ) {
|
||||
return $classmap_data;
|
||||
}
|
||||
|
||||
if ( $this->version_selector->is_version_update_required( $classmap_data['version'], $psr4_data['version'] ) ) {
|
||||
return $psr4_data;
|
||||
}
|
||||
|
||||
return $classmap_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the file for a given class in a PSR-4 namespace.
|
||||
*
|
||||
* @param string $class_name The class to find.
|
||||
*
|
||||
* @return array|null $data The version and path path to the file if found, null otherwise.
|
||||
*/
|
||||
private function find_psr4_file( $class_name ) {
|
||||
if ( empty( $this->psr4_map ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Don't bother with classes that have no namespace.
|
||||
$class_index = strrpos( $class_name, '\\' );
|
||||
if ( ! $class_index ) {
|
||||
return null;
|
||||
}
|
||||
$class_for_path = str_replace( '\\', '/', $class_name );
|
||||
|
||||
// Search for the namespace by iteratively cutting off the last segment until
|
||||
// we find a match. This allows us to check the most-specific namespaces
|
||||
// first as well as minimize the amount of time spent looking.
|
||||
for (
|
||||
$class_namespace = substr( $class_name, 0, $class_index );
|
||||
! empty( $class_namespace );
|
||||
$class_namespace = substr( $class_namespace, 0, strrpos( $class_namespace, '\\' ) )
|
||||
) {
|
||||
$namespace = $class_namespace . '\\';
|
||||
if ( ! isset( $this->psr4_map[ $namespace ] ) ) {
|
||||
continue;
|
||||
}
|
||||
$data = $this->psr4_map[ $namespace ];
|
||||
|
||||
foreach ( $data['path'] as $path ) {
|
||||
$path .= '/' . substr( $class_for_path, strlen( $namespace ) ) . '.php';
|
||||
if ( file_exists( $path ) ) {
|
||||
return array(
|
||||
'version' => $data['version'],
|
||||
'path' => $path,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* This file was automatically generated by automattic/jetpack-autoloader.
|
||||
*
|
||||
* @package automattic/jetpack-autoloader
|
||||
*/
|
||||
|
||||
namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3\al5_0_1;
|
||||
|
||||
// phpcs:ignore
|
||||
|
||||
/**
|
||||
* Used to select package versions.
|
||||
*/
|
||||
class Version_Selector {
|
||||
|
||||
/**
|
||||
* Checks whether the selected package version should be updated. Composer development
|
||||
* package versions ('9999999-dev' or versions that start with 'dev-') are favored
|
||||
* when the JETPACK_AUTOLOAD_DEV constant is set to true.
|
||||
*
|
||||
* @param String $selected_version The currently selected package version.
|
||||
* @param String $compare_version The package version that is being evaluated to
|
||||
* determine if the version needs to be updated.
|
||||
*
|
||||
* @return bool Returns true if the selected package version should be updated,
|
||||
* else false.
|
||||
*/
|
||||
public function is_version_update_required( $selected_version, $compare_version ) {
|
||||
$use_dev_versions = defined( 'JETPACK_AUTOLOAD_DEV' ) && JETPACK_AUTOLOAD_DEV;
|
||||
|
||||
if ( $selected_version === null ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( $use_dev_versions && $this->is_dev_version( $selected_version ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( $this->is_dev_version( $compare_version ) ) {
|
||||
if ( $use_dev_versions ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( version_compare( $selected_version, $compare_version, '<' ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given package version is a development version.
|
||||
*
|
||||
* @param String $version The package version.
|
||||
*
|
||||
* @return bool True if the version is a dev version, else false.
|
||||
*/
|
||||
public function is_dev_version( $version ) {
|
||||
if ( 'dev-' === substr( $version, 0, 4 ) || '9999999-dev' === $version ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
Copyright (c) 2015 Leaf Corcoran, http://scssphp.github.io/scssphp
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1,71 @@
|
||||
# scssphp
|
||||
### <https://scssphp.github.io/scssphp>
|
||||
|
||||

|
||||
[](https://packagist.org/packages/scssphp/scssphp)
|
||||
|
||||
`scssphp` is a compiler for SCSS written in PHP.
|
||||
|
||||
Checkout the homepage, <https://scssphp.github.io/scssphp>, for directions on how to use.
|
||||
|
||||
## Running Tests
|
||||
|
||||
`scssphp` uses [PHPUnit](https://github.com/sebastianbergmann/phpunit) for testing.
|
||||
|
||||
Run the following command from the root directory to run every test:
|
||||
|
||||
vendor/bin/phpunit tests
|
||||
|
||||
There are several tests in the `tests/` directory:
|
||||
|
||||
* `ApiTest.php` contains various unit tests that test the PHP interface.
|
||||
* `ExceptionTest.php` contains unit tests that test for exceptions thrown by the parser and compiler.
|
||||
* `FailingTest.php` contains tests reported in Github issues that demonstrate compatibility bugs.
|
||||
* `InputTest.php` compiles every `.scss` file in the `tests/inputs` directory
|
||||
then compares to the respective `.css` file in the `tests/outputs` directory.
|
||||
* `SassSpecTest.php` extracts tests from the `sass/sass-spec` repository.
|
||||
|
||||
When changing any of the tests in `tests/inputs`, the tests will most likely
|
||||
fail because the output has changed. Once you verify that the output is correct
|
||||
you can run the following command to rebuild all the tests:
|
||||
|
||||
BUILD=1 vendor/bin/phpunit tests
|
||||
|
||||
This will compile all the tests, and save results into `tests/outputs`. It also
|
||||
updates the list of excluded specs from sass-spec.
|
||||
|
||||
To enable the full `sass-spec` compatibility tests:
|
||||
|
||||
TEST_SASS_SPEC=1 vendor/bin/phpunit tests
|
||||
|
||||
## Coding Standard
|
||||
|
||||
`scssphp` source conforms to [PSR12](https://www.php-fig.org/psr/psr-12/).
|
||||
|
||||
Run the following command from the root directory to check the code for "sniffs".
|
||||
|
||||
vendor/bin/phpcs --standard=PSR12 --extensions=php bin src tests *.php
|
||||
|
||||
## Static Analysis
|
||||
|
||||
`scssphp` uses [phpstan](https://phpstan.org/) for static analysis.
|
||||
|
||||
Run the following command from the root directory to analyse the codebase:
|
||||
|
||||
make phpstan
|
||||
|
||||
As most of the codebase is composed of legacy code which cannot be type-checked
|
||||
fully, the setup contains a baseline file with all errors we want to ignore. In
|
||||
particular, we ignore all errors related to not specifying the types inside arrays
|
||||
when these arrays correspond to the representation of Sass values and Sass AST nodes
|
||||
in the parser and compiler.
|
||||
When contributing, the proper process to deal with static analysis is the following:
|
||||
|
||||
1. Make your change in the codebase
|
||||
2. Run `make phpstan`
|
||||
3. Fix errors reported by phpstan when possible
|
||||
4. Repeat step 2 and 3 until nothing gets fixed anymore at step 3
|
||||
5. Run `make phpstan-baseline` to regenerate the phpstan baseline
|
||||
|
||||
Additions to the baseline will be reviewed to avoid ignoring errors that should have
|
||||
been fixed.
|
||||
@@ -0,0 +1,244 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
if (version_compare(PHP_VERSION, '5.6') < 0) {
|
||||
die('Requires PHP 5.6 or above');
|
||||
}
|
||||
|
||||
include __DIR__ . '/../scss.inc.php';
|
||||
|
||||
use ScssPhp\ScssPhp\Compiler;
|
||||
use ScssPhp\ScssPhp\Exception\SassException;
|
||||
use ScssPhp\ScssPhp\OutputStyle;
|
||||
use ScssPhp\ScssPhp\Parser;
|
||||
use ScssPhp\ScssPhp\Version;
|
||||
|
||||
$style = null;
|
||||
$loadPaths = [];
|
||||
$dumpTree = false;
|
||||
$inputFile = null;
|
||||
$changeDir = false;
|
||||
$encoding = false;
|
||||
$sourceMap = false;
|
||||
$embedSources = false;
|
||||
$embedSourceMap = false;
|
||||
|
||||
/**
|
||||
* Parse argument
|
||||
*
|
||||
* @param int $i
|
||||
* @param string[] $options
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
function parseArgument(&$i, $options) {
|
||||
global $argc;
|
||||
global $argv;
|
||||
|
||||
if (! preg_match('/^(?:' . implode('|', (array) $options) . ')=?(.*)/', $argv[$i], $matches)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (strlen($matches[1])) {
|
||||
return $matches[1];
|
||||
}
|
||||
|
||||
if ($i + 1 < $argc) {
|
||||
$i++;
|
||||
|
||||
return $argv[$i];
|
||||
}
|
||||
}
|
||||
|
||||
$arguments = [];
|
||||
|
||||
for ($i = 1; $i < $argc; $i++) {
|
||||
if ($argv[$i] === '-?' || $argv[$i] === '-h' || $argv[$i] === '--help') {
|
||||
$exe = $argv[0];
|
||||
|
||||
$HELP = <<<EOT
|
||||
Usage: $exe [options] [input-file] [output-file]
|
||||
|
||||
Options include:
|
||||
|
||||
--help Show this message [-h, -?]
|
||||
--continue-on-error [deprecated] Ignored
|
||||
--debug-info [deprecated] Ignored [-g]
|
||||
--dump-tree [deprecated] Dump formatted parse tree [-T]
|
||||
--iso8859-1 Use iso8859-1 encoding instead of default utf-8
|
||||
--line-numbers [deprecated] Ignored [--line-comments]
|
||||
--load-path=PATH Set import path [-I]
|
||||
--precision=N [deprecated] Ignored. (default 10) [-p]
|
||||
--sourcemap Create source map file
|
||||
--embed-sources Embed source file contents in source maps
|
||||
--embed-source-map Embed the source map contents in CSS (default if writing to stdout)
|
||||
--style=FORMAT Set the output style (compressed or expanded) [-s, -t]
|
||||
--version Print the version [-v]
|
||||
|
||||
EOT;
|
||||
exit($HELP);
|
||||
}
|
||||
|
||||
if ($argv[$i] === '-v' || $argv[$i] === '--version') {
|
||||
exit(Version::VERSION . "\n");
|
||||
}
|
||||
|
||||
// Keep parsing --continue-on-error to avoid BC breaks for scripts using it
|
||||
if ($argv[$i] === '--continue-on-error') {
|
||||
// TODO report it as a warning ?
|
||||
continue;
|
||||
}
|
||||
|
||||
// Keep parsing it to avoid BC breaks for scripts using it
|
||||
if ($argv[$i] === '-g' || $argv[$i] === '--debug-info') {
|
||||
// TODO report it as a warning ?
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($argv[$i] === '--iso8859-1') {
|
||||
$encoding = 'iso8859-1';
|
||||
continue;
|
||||
}
|
||||
|
||||
// Keep parsing it to avoid BC breaks for scripts using it
|
||||
if ($argv[$i] === '--line-numbers' || $argv[$i] === '--line-comments') {
|
||||
// TODO report it as a warning ?
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($argv[$i] === '--sourcemap') {
|
||||
$sourceMap = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($argv[$i] === '--embed-sources') {
|
||||
$embedSources = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($argv[$i] === '--embed-source-map') {
|
||||
$embedSourceMap = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($argv[$i] === '-T' || $argv[$i] === '--dump-tree') {
|
||||
$dumpTree = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = parseArgument($i, array('-t', '-s', '--style'));
|
||||
|
||||
if (isset($value)) {
|
||||
$style = $value;
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = parseArgument($i, array('-I', '--load-path'));
|
||||
|
||||
if (isset($value)) {
|
||||
$loadPaths[] = $value;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Keep parsing --precision to avoid BC breaks for scripts using it
|
||||
$value = parseArgument($i, array('-p', '--precision'));
|
||||
|
||||
if (isset($value)) {
|
||||
// TODO report it as a warning ?
|
||||
continue;
|
||||
}
|
||||
|
||||
$arguments[] = $argv[$i];
|
||||
}
|
||||
|
||||
|
||||
if (isset($arguments[0]) && file_exists($arguments[0])) {
|
||||
$inputFile = $arguments[0];
|
||||
$data = file_get_contents($inputFile);
|
||||
} else {
|
||||
$data = '';
|
||||
|
||||
while (! feof(STDIN)) {
|
||||
$data .= fread(STDIN, 8192);
|
||||
}
|
||||
}
|
||||
|
||||
if ($dumpTree) {
|
||||
$parser = new Parser($inputFile);
|
||||
|
||||
print_r(json_decode(json_encode($parser->parse($data)), true));
|
||||
|
||||
fwrite(STDERR, 'Warning: the --dump-tree option is deprecated. Use proper debugging tools instead.');
|
||||
|
||||
exit();
|
||||
}
|
||||
|
||||
$scss = new Compiler();
|
||||
|
||||
if ($loadPaths) {
|
||||
$scss->setImportPaths($loadPaths);
|
||||
}
|
||||
|
||||
if ($style) {
|
||||
if ($style === OutputStyle::COMPRESSED || $style === OutputStyle::EXPANDED) {
|
||||
$scss->setOutputStyle($style);
|
||||
} else {
|
||||
fwrite(STDERR, "WARNING: the $style style is deprecated.\n");
|
||||
$scss->setFormatter('ScssPhp\\ScssPhp\\Formatter\\' . ucfirst($style));
|
||||
}
|
||||
}
|
||||
|
||||
$outputFile = isset($arguments[1]) ? $arguments[1] : null;
|
||||
$sourceMapFile = null;
|
||||
|
||||
if ($sourceMap) {
|
||||
$sourceMapOptions = array(
|
||||
'outputSourceFiles' => $embedSources,
|
||||
);
|
||||
if ($embedSourceMap || $outputFile === null) {
|
||||
$scss->setSourceMap(Compiler::SOURCE_MAP_INLINE);
|
||||
} else {
|
||||
$sourceMapFile = $outputFile . '.map';
|
||||
$sourceMapOptions['sourceMapWriteTo'] = $sourceMapFile;
|
||||
$sourceMapOptions['sourceMapURL'] = basename($sourceMapFile);
|
||||
$sourceMapOptions['sourceMapBasepath'] = getcwd();
|
||||
$sourceMapOptions['sourceMapFilename'] = basename($outputFile);
|
||||
|
||||
$scss->setSourceMap(Compiler::SOURCE_MAP_FILE);
|
||||
}
|
||||
|
||||
$scss->setSourceMapOptions($sourceMapOptions);
|
||||
}
|
||||
|
||||
if ($encoding) {
|
||||
$scss->setEncoding($encoding);
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $scss->compileString($data, $inputFile);
|
||||
} catch (SassException $e) {
|
||||
fwrite(STDERR, 'Error: '.$e->getMessage()."\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ($outputFile) {
|
||||
file_put_contents($outputFile, $result->getCss());
|
||||
|
||||
if ($sourceMapFile !== null && $result->getSourceMap() !== null) {
|
||||
file_put_contents($sourceMapFile, $result->getSourceMap());
|
||||
}
|
||||
} else {
|
||||
echo $result->getCss();
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"name": "scssphp/scssphp",
|
||||
"type": "library",
|
||||
"description": "scssphp is a compiler for SCSS written in PHP.",
|
||||
"keywords": ["css", "stylesheet", "scss", "sass", "less"],
|
||||
"homepage": "http://scssphp.github.io/scssphp/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Anthon Pang",
|
||||
"email": "apang@softwaredevelopment.ca",
|
||||
"homepage": "https://github.com/robocoder"
|
||||
},
|
||||
{
|
||||
"name": "Cédric Morin",
|
||||
"email": "cedric@yterium.com",
|
||||
"homepage": "https://github.com/Cerdic"
|
||||
}
|
||||
],
|
||||
"autoload": {
|
||||
"psr-4": { "ScssPhp\\ScssPhp\\": "src/" }
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": { "ScssPhp\\ScssPhp\\Tests\\": "tests/" }
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.6.0",
|
||||
"ext-json": "*",
|
||||
"ext-ctype": "*"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv",
|
||||
"ext-iconv": "Can be used as fallback when ext-mbstring is not available"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.4",
|
||||
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4",
|
||||
"sass/sass-spec": "*",
|
||||
"squizlabs/php_codesniffer": "~3.5",
|
||||
"symfony/phpunit-bridge": "^5.1",
|
||||
"thoughtbot/bourbon": "^7.0",
|
||||
"twbs/bootstrap": "~5.0",
|
||||
"twbs/bootstrap4": "4.6.1",
|
||||
"zurb/foundation": "~6.7.0"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "sass/sass-spec",
|
||||
"version": "2022.08.19",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sass/sass-spec.git",
|
||||
"reference": "2bdc199723a3445d5badac3ac774105698f08861"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sass/sass-spec/zipball/2bdc199723a3445d5badac3ac774105698f08861",
|
||||
"reference": "2bdc199723a3445d5badac3ac774105698f08861",
|
||||
"shasum": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "thoughtbot/bourbon",
|
||||
"version": "v7.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thoughtbot/bourbon.git",
|
||||
"reference": "fbe338ee6807e7f7aa996d82c8a16f248bb149b3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thoughtbot/bourbon/zipball/fbe338ee6807e7f7aa996d82c8a16f248bb149b3",
|
||||
"reference": "fbe338ee6807e7f7aa996d82c8a16f248bb149b3",
|
||||
"shasum": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "package",
|
||||
"package": {
|
||||
"name": "twbs/bootstrap4",
|
||||
"version": "v4.6.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twbs/bootstrap.git",
|
||||
"reference": "043a03c95a2ad6738f85b65e53b9dbdfb03b8d10"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twbs/bootstrap/zipball/043a03c95a2ad6738f85b65e53b9dbdfb03b8d10",
|
||||
"reference": "043a03c95a2ad6738f85b65e53b9dbdfb03b8d10",
|
||||
"shasum": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"bin": ["bin/pscss"],
|
||||
"config": {
|
||||
"sort-packages": true,
|
||||
"allow-plugins": {
|
||||
"bamarni/composer-bin-plugin": true
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"bamarni-bin": {
|
||||
"forward-command": false,
|
||||
"bin-links": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
if (version_compare(PHP_VERSION, '5.6') < 0) {
|
||||
throw new \Exception('scssphp requires PHP 5.6 or above');
|
||||
}
|
||||
|
||||
if (! class_exists('ScssPhp\ScssPhp\Version')) {
|
||||
spl_autoload_register(function ($class) {
|
||||
if (0 !== strpos($class, 'ScssPhp\ScssPhp\\')) {
|
||||
// Not a ScssPhp class
|
||||
return;
|
||||
}
|
||||
|
||||
$subClass = substr($class, strlen('ScssPhp\ScssPhp\\'));
|
||||
$path = __DIR__ . '/src/' . str_replace('\\', '/', $subClass) . '.php';
|
||||
|
||||
if (file_exists($path)) {
|
||||
require $path;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2015-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Base;
|
||||
|
||||
/**
|
||||
* Range
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Range
|
||||
{
|
||||
/**
|
||||
* @var float|int
|
||||
*/
|
||||
public $first;
|
||||
|
||||
/**
|
||||
* @var float|int
|
||||
*/
|
||||
public $last;
|
||||
|
||||
/**
|
||||
* Initialize range
|
||||
*
|
||||
* @param int|float $first
|
||||
* @param int|float $last
|
||||
*/
|
||||
public function __construct($first, $last)
|
||||
{
|
||||
$this->first = $first;
|
||||
$this->last = $last;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for inclusion in range
|
||||
*
|
||||
* @param int|float $value
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function includes($value)
|
||||
{
|
||||
return $value >= $this->first && $value <= $this->last;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
/**
|
||||
* Block
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Block
|
||||
{
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* @var Block|null
|
||||
*/
|
||||
public $parent;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $sourceName;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $sourceIndex;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $sourceLine;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $sourceColumn;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $selectors;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $comments;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $children;
|
||||
|
||||
/**
|
||||
* @var Block|null
|
||||
*/
|
||||
public $selfParent;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class AtRootBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $selector;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $with;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_AT_ROOT;
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Compiler\Environment;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class CallableBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $args;
|
||||
|
||||
/**
|
||||
* @var Environment|null
|
||||
*/
|
||||
public $parentEnv;
|
||||
|
||||
/**
|
||||
* @param string $type
|
||||
*/
|
||||
public function __construct($type)
|
||||
{
|
||||
$this->type = $type;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Compiler\Environment;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class ContentBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $child;
|
||||
|
||||
/**
|
||||
* @var Environment|null
|
||||
*/
|
||||
public $scope;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_INCLUDE;
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class DirectiveBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var string|array
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* @var string|array|null
|
||||
*/
|
||||
public $value;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_DIRECTIVE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class EachBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
public $vars = [];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $list;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_EACH;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class ElseBlock extends Block
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_ELSE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class ElseifBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $cond;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_ELSEIF;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class ForBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $var;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $start;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $end;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $until;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_FOR;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class IfBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $cond;
|
||||
|
||||
/**
|
||||
* @var array<ElseifBlock|ElseBlock>
|
||||
*/
|
||||
public $cases = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_IF;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class MediaBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var string|array|null
|
||||
*/
|
||||
public $value;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $queryList;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_MEDIA;
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class NestedPropertyBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $hasValue;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $prefix;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_NESTED_PROPERTY;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Block;
|
||||
|
||||
use ScssPhp\ScssPhp\Block;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class WhileBlock extends Block
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $cond;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->type = Type::T_WHILE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,272 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
use Exception;
|
||||
use ScssPhp\ScssPhp\Version;
|
||||
|
||||
/**
|
||||
* The scss cache manager.
|
||||
*
|
||||
* In short:
|
||||
*
|
||||
* allow to put in cache/get from cache a generic result from a known operation on a generic dataset,
|
||||
* taking in account options that affects the result
|
||||
*
|
||||
* The cache manager is agnostic about data format and only the operation is expected to be described by string
|
||||
*/
|
||||
|
||||
/**
|
||||
* SCSS cache
|
||||
*
|
||||
* @author Cedric Morin <cedric@yterium.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Cache
|
||||
{
|
||||
const CACHE_VERSION = 1;
|
||||
|
||||
/**
|
||||
* directory used for storing data
|
||||
*
|
||||
* @var string|false
|
||||
*/
|
||||
public static $cacheDir = false;
|
||||
|
||||
/**
|
||||
* prefix for the storing data
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $prefix = 'scssphp_';
|
||||
|
||||
/**
|
||||
* force a refresh : 'once' for refreshing the first hit on a cache only, true to never use the cache in this hit
|
||||
*
|
||||
* @var bool|string
|
||||
*/
|
||||
public static $forceRefresh = false;
|
||||
|
||||
/**
|
||||
* specifies the number of seconds after which data cached will be seen as 'garbage' and potentially cleaned up
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public static $gcLifetime = 604800;
|
||||
|
||||
/**
|
||||
* array of already refreshed cache if $forceRefresh==='once'
|
||||
*
|
||||
* @var array<string, bool>
|
||||
*/
|
||||
protected static $refreshed = [];
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param array $options
|
||||
*
|
||||
* @phpstan-param array{cacheDir?: string, prefix?: string, forceRefresh?: string} $options
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
// check $cacheDir
|
||||
if (isset($options['cacheDir'])) {
|
||||
self::$cacheDir = $options['cacheDir'];
|
||||
}
|
||||
|
||||
if (empty(self::$cacheDir)) {
|
||||
throw new Exception('cacheDir not set');
|
||||
}
|
||||
|
||||
if (isset($options['prefix'])) {
|
||||
self::$prefix = $options['prefix'];
|
||||
}
|
||||
|
||||
if (empty(self::$prefix)) {
|
||||
throw new Exception('prefix not set');
|
||||
}
|
||||
|
||||
if (isset($options['forceRefresh'])) {
|
||||
self::$forceRefresh = $options['forceRefresh'];
|
||||
}
|
||||
|
||||
self::checkCacheDir();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the cached result of $operation on $what,
|
||||
* which is known as dependant from the content of $options
|
||||
*
|
||||
* @param string $operation parse, compile...
|
||||
* @param mixed $what content key (e.g., filename to be treated)
|
||||
* @param array $options any option that affect the operation result on the content
|
||||
* @param int|null $lastModified last modified timestamp
|
||||
*
|
||||
* @return mixed
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getCache($operation, $what, $options = [], $lastModified = null)
|
||||
{
|
||||
$fileCache = self::$cacheDir . self::cacheName($operation, $what, $options);
|
||||
|
||||
if (
|
||||
((self::$forceRefresh === false) || (self::$forceRefresh === 'once' &&
|
||||
isset(self::$refreshed[$fileCache]))) && file_exists($fileCache)
|
||||
) {
|
||||
$cacheTime = filemtime($fileCache);
|
||||
|
||||
if (
|
||||
(\is_null($lastModified) || $cacheTime > $lastModified) &&
|
||||
$cacheTime + self::$gcLifetime > time()
|
||||
) {
|
||||
$c = file_get_contents($fileCache);
|
||||
$c = unserialize($c);
|
||||
|
||||
if (\is_array($c) && isset($c['value'])) {
|
||||
return $c['value'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Put in cache the result of $operation on $what,
|
||||
* which is known as dependant from the content of $options
|
||||
*
|
||||
* @param string $operation
|
||||
* @param mixed $what
|
||||
* @param mixed $value
|
||||
* @param array $options
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setCache($operation, $what, $value, $options = [])
|
||||
{
|
||||
$fileCache = self::$cacheDir . self::cacheName($operation, $what, $options);
|
||||
|
||||
$c = ['value' => $value];
|
||||
$c = serialize($c);
|
||||
|
||||
file_put_contents($fileCache, $c);
|
||||
|
||||
if (self::$forceRefresh === 'once') {
|
||||
self::$refreshed[$fileCache] = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the cache name for the caching of $operation on $what,
|
||||
* which is known as dependant from the content of $options
|
||||
*
|
||||
* @param string $operation
|
||||
* @param mixed $what
|
||||
* @param array $options
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function cacheName($operation, $what, $options = [])
|
||||
{
|
||||
$t = [
|
||||
'version' => self::CACHE_VERSION,
|
||||
'scssphpVersion' => Version::VERSION,
|
||||
'operation' => $operation,
|
||||
'what' => $what,
|
||||
'options' => $options
|
||||
];
|
||||
|
||||
$t = self::$prefix
|
||||
. sha1(json_encode($t))
|
||||
. ".$operation"
|
||||
. ".scsscache";
|
||||
|
||||
return $t;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check that the cache dir exists and is writeable
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function checkCacheDir()
|
||||
{
|
||||
self::$cacheDir = str_replace('\\', '/', self::$cacheDir);
|
||||
self::$cacheDir = rtrim(self::$cacheDir, '/') . '/';
|
||||
|
||||
if (! is_dir(self::$cacheDir)) {
|
||||
throw new Exception('Cache directory doesn\'t exist: ' . self::$cacheDir);
|
||||
}
|
||||
|
||||
if (! is_writable(self::$cacheDir)) {
|
||||
throw new Exception('Cache directory isn\'t writable: ' . self::$cacheDir);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete unused cached files
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function cleanCache()
|
||||
{
|
||||
static $clean = false;
|
||||
|
||||
if ($clean || empty(self::$cacheDir)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$clean = true;
|
||||
|
||||
// only remove files with extensions created by SCSSPHP Cache
|
||||
// css files removed based on the list files
|
||||
$removeTypes = ['scsscache' => 1];
|
||||
|
||||
$files = scandir(self::$cacheDir);
|
||||
|
||||
if (! $files) {
|
||||
return;
|
||||
}
|
||||
|
||||
$checkTime = time() - self::$gcLifetime;
|
||||
|
||||
foreach ($files as $file) {
|
||||
// don't delete if the file wasn't created with SCSSPHP Cache
|
||||
if (strpos($file, self::$prefix) !== 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$parts = explode('.', $file);
|
||||
$type = array_pop($parts);
|
||||
|
||||
if (! isset($removeTypes[$type])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$fullPath = self::$cacheDir . $file;
|
||||
$mtime = filemtime($fullPath);
|
||||
|
||||
// don't delete if it's a relatively new file
|
||||
if ($mtime > $checkTime) {
|
||||
continue;
|
||||
}
|
||||
|
||||
unlink($fullPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,247 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
/**
|
||||
* CSS Colors
|
||||
*
|
||||
* @author Leaf Corcoran <leafot@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Colors
|
||||
{
|
||||
/**
|
||||
* CSS Colors
|
||||
*
|
||||
* @see http://www.w3.org/TR/css3-color
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected static $cssColors = [
|
||||
'aliceblue' => '240,248,255',
|
||||
'antiquewhite' => '250,235,215',
|
||||
'aqua' => '0,255,255',
|
||||
'cyan' => '0,255,255',
|
||||
'aquamarine' => '127,255,212',
|
||||
'azure' => '240,255,255',
|
||||
'beige' => '245,245,220',
|
||||
'bisque' => '255,228,196',
|
||||
'black' => '0,0,0',
|
||||
'blanchedalmond' => '255,235,205',
|
||||
'blue' => '0,0,255',
|
||||
'blueviolet' => '138,43,226',
|
||||
'brown' => '165,42,42',
|
||||
'burlywood' => '222,184,135',
|
||||
'cadetblue' => '95,158,160',
|
||||
'chartreuse' => '127,255,0',
|
||||
'chocolate' => '210,105,30',
|
||||
'coral' => '255,127,80',
|
||||
'cornflowerblue' => '100,149,237',
|
||||
'cornsilk' => '255,248,220',
|
||||
'crimson' => '220,20,60',
|
||||
'darkblue' => '0,0,139',
|
||||
'darkcyan' => '0,139,139',
|
||||
'darkgoldenrod' => '184,134,11',
|
||||
'darkgray' => '169,169,169',
|
||||
'darkgrey' => '169,169,169',
|
||||
'darkgreen' => '0,100,0',
|
||||
'darkkhaki' => '189,183,107',
|
||||
'darkmagenta' => '139,0,139',
|
||||
'darkolivegreen' => '85,107,47',
|
||||
'darkorange' => '255,140,0',
|
||||
'darkorchid' => '153,50,204',
|
||||
'darkred' => '139,0,0',
|
||||
'darksalmon' => '233,150,122',
|
||||
'darkseagreen' => '143,188,143',
|
||||
'darkslateblue' => '72,61,139',
|
||||
'darkslategray' => '47,79,79',
|
||||
'darkslategrey' => '47,79,79',
|
||||
'darkturquoise' => '0,206,209',
|
||||
'darkviolet' => '148,0,211',
|
||||
'deeppink' => '255,20,147',
|
||||
'deepskyblue' => '0,191,255',
|
||||
'dimgray' => '105,105,105',
|
||||
'dimgrey' => '105,105,105',
|
||||
'dodgerblue' => '30,144,255',
|
||||
'firebrick' => '178,34,34',
|
||||
'floralwhite' => '255,250,240',
|
||||
'forestgreen' => '34,139,34',
|
||||
'fuchsia' => '255,0,255',
|
||||
'magenta' => '255,0,255',
|
||||
'gainsboro' => '220,220,220',
|
||||
'ghostwhite' => '248,248,255',
|
||||
'gold' => '255,215,0',
|
||||
'goldenrod' => '218,165,32',
|
||||
'gray' => '128,128,128',
|
||||
'grey' => '128,128,128',
|
||||
'green' => '0,128,0',
|
||||
'greenyellow' => '173,255,47',
|
||||
'honeydew' => '240,255,240',
|
||||
'hotpink' => '255,105,180',
|
||||
'indianred' => '205,92,92',
|
||||
'indigo' => '75,0,130',
|
||||
'ivory' => '255,255,240',
|
||||
'khaki' => '240,230,140',
|
||||
'lavender' => '230,230,250',
|
||||
'lavenderblush' => '255,240,245',
|
||||
'lawngreen' => '124,252,0',
|
||||
'lemonchiffon' => '255,250,205',
|
||||
'lightblue' => '173,216,230',
|
||||
'lightcoral' => '240,128,128',
|
||||
'lightcyan' => '224,255,255',
|
||||
'lightgoldenrodyellow' => '250,250,210',
|
||||
'lightgray' => '211,211,211',
|
||||
'lightgrey' => '211,211,211',
|
||||
'lightgreen' => '144,238,144',
|
||||
'lightpink' => '255,182,193',
|
||||
'lightsalmon' => '255,160,122',
|
||||
'lightseagreen' => '32,178,170',
|
||||
'lightskyblue' => '135,206,250',
|
||||
'lightslategray' => '119,136,153',
|
||||
'lightslategrey' => '119,136,153',
|
||||
'lightsteelblue' => '176,196,222',
|
||||
'lightyellow' => '255,255,224',
|
||||
'lime' => '0,255,0',
|
||||
'limegreen' => '50,205,50',
|
||||
'linen' => '250,240,230',
|
||||
'maroon' => '128,0,0',
|
||||
'mediumaquamarine' => '102,205,170',
|
||||
'mediumblue' => '0,0,205',
|
||||
'mediumorchid' => '186,85,211',
|
||||
'mediumpurple' => '147,112,219',
|
||||
'mediumseagreen' => '60,179,113',
|
||||
'mediumslateblue' => '123,104,238',
|
||||
'mediumspringgreen' => '0,250,154',
|
||||
'mediumturquoise' => '72,209,204',
|
||||
'mediumvioletred' => '199,21,133',
|
||||
'midnightblue' => '25,25,112',
|
||||
'mintcream' => '245,255,250',
|
||||
'mistyrose' => '255,228,225',
|
||||
'moccasin' => '255,228,181',
|
||||
'navajowhite' => '255,222,173',
|
||||
'navy' => '0,0,128',
|
||||
'oldlace' => '253,245,230',
|
||||
'olive' => '128,128,0',
|
||||
'olivedrab' => '107,142,35',
|
||||
'orange' => '255,165,0',
|
||||
'orangered' => '255,69,0',
|
||||
'orchid' => '218,112,214',
|
||||
'palegoldenrod' => '238,232,170',
|
||||
'palegreen' => '152,251,152',
|
||||
'paleturquoise' => '175,238,238',
|
||||
'palevioletred' => '219,112,147',
|
||||
'papayawhip' => '255,239,213',
|
||||
'peachpuff' => '255,218,185',
|
||||
'peru' => '205,133,63',
|
||||
'pink' => '255,192,203',
|
||||
'plum' => '221,160,221',
|
||||
'powderblue' => '176,224,230',
|
||||
'purple' => '128,0,128',
|
||||
'red' => '255,0,0',
|
||||
'rosybrown' => '188,143,143',
|
||||
'royalblue' => '65,105,225',
|
||||
'saddlebrown' => '139,69,19',
|
||||
'salmon' => '250,128,114',
|
||||
'sandybrown' => '244,164,96',
|
||||
'seagreen' => '46,139,87',
|
||||
'seashell' => '255,245,238',
|
||||
'sienna' => '160,82,45',
|
||||
'silver' => '192,192,192',
|
||||
'skyblue' => '135,206,235',
|
||||
'slateblue' => '106,90,205',
|
||||
'slategray' => '112,128,144',
|
||||
'slategrey' => '112,128,144',
|
||||
'snow' => '255,250,250',
|
||||
'springgreen' => '0,255,127',
|
||||
'steelblue' => '70,130,180',
|
||||
'tan' => '210,180,140',
|
||||
'teal' => '0,128,128',
|
||||
'thistle' => '216,191,216',
|
||||
'tomato' => '255,99,71',
|
||||
'turquoise' => '64,224,208',
|
||||
'violet' => '238,130,238',
|
||||
'wheat' => '245,222,179',
|
||||
'white' => '255,255,255',
|
||||
'whitesmoke' => '245,245,245',
|
||||
'yellow' => '255,255,0',
|
||||
'yellowgreen' => '154,205,50',
|
||||
'rebeccapurple' => '102,51,153',
|
||||
'transparent' => '0,0,0,0',
|
||||
];
|
||||
|
||||
/**
|
||||
* Convert named color in a [r,g,b[,a]] array
|
||||
*
|
||||
* @param string $colorName
|
||||
*
|
||||
* @return int[]|null
|
||||
*/
|
||||
public static function colorNameToRGBa($colorName)
|
||||
{
|
||||
if (\is_string($colorName) && isset(static::$cssColors[$colorName])) {
|
||||
$rgba = explode(',', static::$cssColors[$colorName]);
|
||||
|
||||
// only case with opacity is transparent, with opacity=0, so we can intval on opacity also
|
||||
$rgba = array_map('intval', $rgba);
|
||||
|
||||
return $rgba;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse conversion : from RGBA to a color name if possible
|
||||
*
|
||||
* @param int $r
|
||||
* @param int $g
|
||||
* @param int $b
|
||||
* @param int|float $a
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public static function RGBaToColorName($r, $g, $b, $a = 1)
|
||||
{
|
||||
static $reverseColorTable = null;
|
||||
|
||||
if (! is_numeric($r) || ! is_numeric($g) || ! is_numeric($b) || ! is_numeric($a)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($a < 1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (\is_null($reverseColorTable)) {
|
||||
$reverseColorTable = [];
|
||||
|
||||
foreach (static::$cssColors as $name => $rgb_str) {
|
||||
$rgb_str = explode(',', $rgb_str);
|
||||
|
||||
if (
|
||||
\count($rgb_str) == 3 &&
|
||||
! isset($reverseColorTable[\intval($rgb_str[0])][\intval($rgb_str[1])][\intval($rgb_str[2])])
|
||||
) {
|
||||
$reverseColorTable[\intval($rgb_str[0])][\intval($rgb_str[1])][\intval($rgb_str[2])] = $name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($reverseColorTable[\intval($r)][\intval($g)][\intval($b)])) {
|
||||
return $reverseColorTable[\intval($r)][\intval($g)][\intval($b)];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
class CompilationResult
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $css;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
private $sourceMap;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
private $includedFiles;
|
||||
|
||||
/**
|
||||
* @param string $css
|
||||
* @param string|null $sourceMap
|
||||
* @param string[] $includedFiles
|
||||
*/
|
||||
public function __construct($css, $sourceMap, array $includedFiles)
|
||||
{
|
||||
$this->css = $css;
|
||||
$this->sourceMap = $sourceMap;
|
||||
$this->includedFiles = $includedFiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getCss()
|
||||
{
|
||||
return $this->css;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getIncludedFiles()
|
||||
{
|
||||
return $this->includedFiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* The sourceMap content, if it was generated
|
||||
*
|
||||
* @return null|string
|
||||
*/
|
||||
public function getSourceMap()
|
||||
{
|
||||
return $this->sourceMap;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+77
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Compiler;
|
||||
|
||||
use ScssPhp\ScssPhp\CompilationResult;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class CachedResult
|
||||
{
|
||||
/**
|
||||
* @var CompilationResult
|
||||
*/
|
||||
private $result;
|
||||
|
||||
/**
|
||||
* @var array<string, int>
|
||||
*/
|
||||
private $parsedFiles;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
* @phpstan-var list<array{currentDir: string|null, path: string, filePath: string}>
|
||||
*/
|
||||
private $resolvedImports;
|
||||
|
||||
/**
|
||||
* @param CompilationResult $result
|
||||
* @param array<string, int> $parsedFiles
|
||||
* @param array $resolvedImports
|
||||
*
|
||||
* @phpstan-param list<array{currentDir: string|null, path: string, filePath: string}> $resolvedImports
|
||||
*/
|
||||
public function __construct(CompilationResult $result, array $parsedFiles, array $resolvedImports)
|
||||
{
|
||||
$this->result = $result;
|
||||
$this->parsedFiles = $parsedFiles;
|
||||
$this->resolvedImports = $resolvedImports;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CompilationResult
|
||||
*/
|
||||
public function getResult()
|
||||
{
|
||||
return $this->result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, int>
|
||||
*/
|
||||
public function getParsedFiles()
|
||||
{
|
||||
return $this->parsedFiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*
|
||||
* @phpstan-return list<array{currentDir: string|null, path: string, filePath: string}>
|
||||
*/
|
||||
public function getResolvedImports()
|
||||
{
|
||||
return $this->resolvedImports;
|
||||
}
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Compiler;
|
||||
|
||||
/**
|
||||
* Compiler environment
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Environment
|
||||
{
|
||||
/**
|
||||
* @var \ScssPhp\ScssPhp\Block|null
|
||||
*/
|
||||
public $block;
|
||||
|
||||
/**
|
||||
* @var \ScssPhp\ScssPhp\Compiler\Environment|null
|
||||
*/
|
||||
public $parent;
|
||||
|
||||
/**
|
||||
* @var Environment|null
|
||||
*/
|
||||
public $declarationScopeParent;
|
||||
|
||||
/**
|
||||
* @var Environment|null
|
||||
*/
|
||||
public $parentStore;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $selectors;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
public $marker;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $store;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $storeUnreduced;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $depth;
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Exception;
|
||||
|
||||
/**
|
||||
* Compiler exception
|
||||
*
|
||||
* @author Oleksandr Savchenko <traveltino@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class CompilerException extends \Exception implements SassException
|
||||
{
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Exception;
|
||||
|
||||
/**
|
||||
* Parser Exception
|
||||
*
|
||||
* @author Oleksandr Savchenko <traveltino@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class ParserException extends \Exception implements SassException
|
||||
{
|
||||
/**
|
||||
* @var array|null
|
||||
* @phpstan-var array{string, int, int}|null
|
||||
*/
|
||||
private $sourcePosition;
|
||||
|
||||
/**
|
||||
* Get source position
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @return array|null
|
||||
* @phpstan-return array{string, int, int}|null
|
||||
*/
|
||||
public function getSourcePosition()
|
||||
{
|
||||
return $this->sourcePosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set source position
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param array $sourcePosition
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @phpstan-param array{string, int, int} $sourcePosition
|
||||
*/
|
||||
public function setSourcePosition($sourcePosition)
|
||||
{
|
||||
$this->sourcePosition = $sourcePosition;
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Exception;
|
||||
|
||||
/**
|
||||
* Range exception
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class RangeException extends \Exception implements SassException
|
||||
{
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace ScssPhp\ScssPhp\Exception;
|
||||
|
||||
interface SassException
|
||||
{
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace ScssPhp\ScssPhp\Exception;
|
||||
|
||||
/**
|
||||
* An exception thrown by SassScript.
|
||||
*
|
||||
* This class does not implement SassException on purpose, as it should
|
||||
* never be returned to the outside code. The compilation will catch it
|
||||
* and replace it with a SassException reporting the location of the
|
||||
* error.
|
||||
*/
|
||||
class SassScriptException extends \Exception
|
||||
{
|
||||
/**
|
||||
* Creates a SassScriptException with support for an argument name.
|
||||
*
|
||||
* This helper ensures a consistent handling of argument names in the
|
||||
* error message, without duplicating it.
|
||||
*
|
||||
* @param string $message
|
||||
* @param string|null $name The argument name, without $
|
||||
*
|
||||
* @return SassScriptException
|
||||
*/
|
||||
public static function forArgument($message, $name = null)
|
||||
{
|
||||
$varDisplay = !\is_null($name) ? "\${$name}: " : '';
|
||||
|
||||
return new self($varDisplay . $message);
|
||||
}
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Exception;
|
||||
|
||||
@trigger_error(sprintf('The "%s" class is deprecated.', ServerException::class), E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* Server Exception
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @deprecated The Scssphp server should define its own exception instead.
|
||||
*/
|
||||
class ServerException extends \Exception implements SassException
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,377 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
use ScssPhp\ScssPhp\Formatter\OutputBlock;
|
||||
use ScssPhp\ScssPhp\SourceMap\SourceMapGenerator;
|
||||
|
||||
/**
|
||||
* Base formatter
|
||||
*
|
||||
* @author Leaf Corcoran <leafot@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
abstract class Formatter
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $indentLevel;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $indentChar;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $break;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $open;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $close;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $tagSeparator;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $assignSeparator;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $keepSemicolons;
|
||||
|
||||
/**
|
||||
* @var \ScssPhp\ScssPhp\Formatter\OutputBlock
|
||||
*/
|
||||
protected $currentBlock;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $currentLine;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $currentColumn;
|
||||
|
||||
/**
|
||||
* @var \ScssPhp\ScssPhp\SourceMap\SourceMapGenerator|null
|
||||
*/
|
||||
protected $sourceMapGenerator;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $strippedSemicolon;
|
||||
|
||||
/**
|
||||
* Initialize formatter
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
abstract public function __construct();
|
||||
|
||||
/**
|
||||
* Return indentation (whitespace)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function indentStr()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Return property assignment
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param string $name
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function property($name, $value)
|
||||
{
|
||||
return rtrim($name) . $this->assignSeparator . $value . ';';
|
||||
}
|
||||
|
||||
/**
|
||||
* Return custom property assignment
|
||||
* differs in that you have to keep spaces in the value as is
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param string $name
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function customProperty($name, $value)
|
||||
{
|
||||
return rtrim($name) . trim($this->assignSeparator) . $value . ';';
|
||||
}
|
||||
|
||||
/**
|
||||
* Output lines inside a block
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function blockLines(OutputBlock $block)
|
||||
{
|
||||
$inner = $this->indentStr();
|
||||
$glue = $this->break . $inner;
|
||||
|
||||
$this->write($inner . implode($glue, $block->lines));
|
||||
|
||||
if (! empty($block->children)) {
|
||||
$this->write($this->break);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output block selectors
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function blockSelectors(OutputBlock $block)
|
||||
{
|
||||
assert(! empty($block->selectors));
|
||||
|
||||
$inner = $this->indentStr();
|
||||
|
||||
$this->write($inner
|
||||
. implode($this->tagSeparator, $block->selectors)
|
||||
. $this->open . $this->break);
|
||||
}
|
||||
|
||||
/**
|
||||
* Output block children
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function blockChildren(OutputBlock $block)
|
||||
{
|
||||
foreach ($block->children as $child) {
|
||||
$this->block($child);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output non-empty block
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function block(OutputBlock $block)
|
||||
{
|
||||
if (empty($block->lines) && empty($block->children)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->currentBlock = $block;
|
||||
|
||||
$pre = $this->indentStr();
|
||||
|
||||
if (! empty($block->selectors)) {
|
||||
$this->blockSelectors($block);
|
||||
|
||||
$this->indentLevel++;
|
||||
}
|
||||
|
||||
if (! empty($block->lines)) {
|
||||
$this->blockLines($block);
|
||||
}
|
||||
|
||||
if (! empty($block->children)) {
|
||||
$this->blockChildren($block);
|
||||
}
|
||||
|
||||
if (! empty($block->selectors)) {
|
||||
$this->indentLevel--;
|
||||
|
||||
if (! $this->keepSemicolons) {
|
||||
$this->strippedSemicolon = '';
|
||||
}
|
||||
|
||||
if (empty($block->children)) {
|
||||
$this->write($this->break);
|
||||
}
|
||||
|
||||
$this->write($pre . $this->close . $this->break);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test and clean safely empty children
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function testEmptyChildren($block)
|
||||
{
|
||||
$isEmpty = empty($block->lines);
|
||||
|
||||
if ($block->children) {
|
||||
foreach ($block->children as $k => &$child) {
|
||||
if (! $this->testEmptyChildren($child)) {
|
||||
$isEmpty = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($child->type === Type::T_MEDIA || $child->type === Type::T_DIRECTIVE) {
|
||||
$child->children = [];
|
||||
$child->selectors = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $isEmpty;
|
||||
}
|
||||
|
||||
/**
|
||||
* Entry point to formatting a block
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block An abstract syntax tree
|
||||
* @param \ScssPhp\ScssPhp\SourceMap\SourceMapGenerator|null $sourceMapGenerator Optional source map generator
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function format(OutputBlock $block, SourceMapGenerator $sourceMapGenerator = null)
|
||||
{
|
||||
$this->sourceMapGenerator = null;
|
||||
|
||||
if ($sourceMapGenerator) {
|
||||
$this->currentLine = 1;
|
||||
$this->currentColumn = 0;
|
||||
$this->sourceMapGenerator = $sourceMapGenerator;
|
||||
}
|
||||
|
||||
$this->testEmptyChildren($block);
|
||||
|
||||
ob_start();
|
||||
|
||||
try {
|
||||
$this->block($block);
|
||||
} catch (\Exception $e) {
|
||||
ob_end_clean();
|
||||
throw $e;
|
||||
} catch (\Throwable $e) {
|
||||
ob_end_clean();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
$out = ob_get_clean();
|
||||
assert($out !== false);
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output content
|
||||
*
|
||||
* @param string $str
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function write($str)
|
||||
{
|
||||
if (! empty($this->strippedSemicolon)) {
|
||||
echo $this->strippedSemicolon;
|
||||
|
||||
$this->strippedSemicolon = '';
|
||||
}
|
||||
|
||||
/*
|
||||
* Maybe Strip semi-colon appended by property(); it's a separator, not a terminator
|
||||
* will be striped for real before a closing, otherwise displayed unchanged starting the next write
|
||||
*/
|
||||
if (
|
||||
! $this->keepSemicolons &&
|
||||
$str &&
|
||||
(strpos($str, ';') !== false) &&
|
||||
(substr($str, -1) === ';')
|
||||
) {
|
||||
$str = substr($str, 0, -1);
|
||||
|
||||
$this->strippedSemicolon = ';';
|
||||
}
|
||||
|
||||
if ($this->sourceMapGenerator) {
|
||||
$lines = explode("\n", $str);
|
||||
$lastLine = array_pop($lines);
|
||||
|
||||
foreach ($lines as $line) {
|
||||
// If the written line starts is empty, adding a mapping would add it for
|
||||
// a non-existent column as we are at the end of the line
|
||||
if ($line !== '') {
|
||||
assert($this->currentBlock->sourceLine !== null);
|
||||
assert($this->currentBlock->sourceName !== null);
|
||||
$this->sourceMapGenerator->addMapping(
|
||||
$this->currentLine,
|
||||
$this->currentColumn,
|
||||
$this->currentBlock->sourceLine,
|
||||
//columns from parser are off by one
|
||||
$this->currentBlock->sourceColumn > 0 ? $this->currentBlock->sourceColumn - 1 : 0,
|
||||
$this->currentBlock->sourceName
|
||||
);
|
||||
}
|
||||
|
||||
$this->currentLine++;
|
||||
$this->currentColumn = 0;
|
||||
}
|
||||
|
||||
if ($lastLine !== '') {
|
||||
assert($this->currentBlock->sourceLine !== null);
|
||||
assert($this->currentBlock->sourceName !== null);
|
||||
$this->sourceMapGenerator->addMapping(
|
||||
$this->currentLine,
|
||||
$this->currentColumn,
|
||||
$this->currentBlock->sourceLine,
|
||||
//columns from parser are off by one
|
||||
$this->currentBlock->sourceColumn > 0 ? $this->currentBlock->sourceColumn - 1 : 0,
|
||||
$this->currentBlock->sourceName
|
||||
);
|
||||
}
|
||||
|
||||
$this->currentColumn += \strlen($lastLine);
|
||||
}
|
||||
|
||||
echo $str;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
use ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
/**
|
||||
* Compact formatter
|
||||
*
|
||||
* @author Leaf Corcoran <leafot@gmail.com>
|
||||
*
|
||||
* @deprecated since 1.4.0. Use the Compressed formatter instead.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Compact extends Formatter
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
@trigger_error('The Compact formatter is deprecated since 1.4.0. Use the Compressed formatter instead.', E_USER_DEPRECATED);
|
||||
|
||||
$this->indentLevel = 0;
|
||||
$this->indentChar = '';
|
||||
$this->break = '';
|
||||
$this->open = ' {';
|
||||
$this->close = "}\n\n";
|
||||
$this->tagSeparator = ',';
|
||||
$this->assignSeparator = ':';
|
||||
$this->keepSemicolons = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function indentStr()
|
||||
{
|
||||
return ' ';
|
||||
}
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
use ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
/**
|
||||
* Compressed formatter
|
||||
*
|
||||
* @author Leaf Corcoran <leafot@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Compressed extends Formatter
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->indentLevel = 0;
|
||||
$this->indentChar = ' ';
|
||||
$this->break = '';
|
||||
$this->open = '{';
|
||||
$this->close = '}';
|
||||
$this->tagSeparator = ',';
|
||||
$this->assignSeparator = ':';
|
||||
$this->keepSemicolons = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function blockLines(OutputBlock $block)
|
||||
{
|
||||
$inner = $this->indentStr();
|
||||
|
||||
$glue = $this->break . $inner;
|
||||
|
||||
foreach ($block->lines as $index => $line) {
|
||||
if (substr($line, 0, 2) === '/*' && substr($line, 2, 1) !== '!') {
|
||||
unset($block->lines[$index]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->write($inner . implode($glue, $block->lines));
|
||||
|
||||
if (! empty($block->children)) {
|
||||
$this->write($this->break);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output block selectors
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*/
|
||||
protected function blockSelectors(OutputBlock $block)
|
||||
{
|
||||
assert(! empty($block->selectors));
|
||||
|
||||
$inner = $this->indentStr();
|
||||
|
||||
$this->write(
|
||||
$inner
|
||||
. implode(
|
||||
$this->tagSeparator,
|
||||
str_replace([' > ', ' + ', ' ~ '], ['>', '+', '~'], $block->selectors)
|
||||
)
|
||||
. $this->open . $this->break
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
use ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
/**
|
||||
* Crunched formatter
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @deprecated since 1.4.0. Use the Compressed formatter instead.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Crunched extends Formatter
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
@trigger_error('The Crunched formatter is deprecated since 1.4.0. Use the Compressed formatter instead.', E_USER_DEPRECATED);
|
||||
|
||||
$this->indentLevel = 0;
|
||||
$this->indentChar = ' ';
|
||||
$this->break = '';
|
||||
$this->open = '{';
|
||||
$this->close = '}';
|
||||
$this->tagSeparator = ',';
|
||||
$this->assignSeparator = ':';
|
||||
$this->keepSemicolons = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function blockLines(OutputBlock $block)
|
||||
{
|
||||
$inner = $this->indentStr();
|
||||
|
||||
$glue = $this->break . $inner;
|
||||
|
||||
foreach ($block->lines as $index => $line) {
|
||||
if (substr($line, 0, 2) === '/*') {
|
||||
unset($block->lines[$index]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->write($inner . implode($glue, $block->lines));
|
||||
|
||||
if (! empty($block->children)) {
|
||||
$this->write($this->break);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output block selectors
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*/
|
||||
protected function blockSelectors(OutputBlock $block)
|
||||
{
|
||||
assert(! empty($block->selectors));
|
||||
|
||||
$inner = $this->indentStr();
|
||||
|
||||
$this->write(
|
||||
$inner
|
||||
. implode(
|
||||
$this->tagSeparator,
|
||||
str_replace([' > ', ' + ', ' ~ '], ['>', '+', '~'], $block->selectors)
|
||||
)
|
||||
. $this->open . $this->break
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
use ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
/**
|
||||
* Debug formatter
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @deprecated since 1.4.0.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Debug extends Formatter
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
@trigger_error('The Debug formatter is deprecated since 1.4.0.', E_USER_DEPRECATED);
|
||||
|
||||
$this->indentLevel = 0;
|
||||
$this->indentChar = '';
|
||||
$this->break = "\n";
|
||||
$this->open = ' {';
|
||||
$this->close = ' }';
|
||||
$this->tagSeparator = ', ';
|
||||
$this->assignSeparator = ': ';
|
||||
$this->keepSemicolons = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function indentStr()
|
||||
{
|
||||
return str_repeat(' ', $this->indentLevel);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function blockLines(OutputBlock $block)
|
||||
{
|
||||
$indent = $this->indentStr();
|
||||
|
||||
if (empty($block->lines)) {
|
||||
$this->write("{$indent}block->lines: []\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($block->lines as $index => $line) {
|
||||
$this->write("{$indent}block->lines[{$index}]: $line\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function blockSelectors(OutputBlock $block)
|
||||
{
|
||||
$indent = $this->indentStr();
|
||||
|
||||
if (empty($block->selectors)) {
|
||||
$this->write("{$indent}block->selectors: []\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($block->selectors as $index => $selector) {
|
||||
$this->write("{$indent}block->selectors[{$index}]: $selector\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function blockChildren(OutputBlock $block)
|
||||
{
|
||||
$indent = $this->indentStr();
|
||||
|
||||
if (empty($block->children)) {
|
||||
$this->write("{$indent}block->children: []\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->indentLevel++;
|
||||
|
||||
foreach ($block->children as $i => $child) {
|
||||
$this->block($child);
|
||||
}
|
||||
|
||||
$this->indentLevel--;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function block(OutputBlock $block)
|
||||
{
|
||||
$indent = $this->indentStr();
|
||||
|
||||
$this->write("{$indent}block->type: {$block->type}\n" .
|
||||
"{$indent}block->depth: {$block->depth}\n");
|
||||
|
||||
$this->currentBlock = $block;
|
||||
|
||||
$this->blockSelectors($block);
|
||||
$this->blockLines($block);
|
||||
$this->blockChildren($block);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
use ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
/**
|
||||
* Expanded formatter
|
||||
*
|
||||
* @author Leaf Corcoran <leafot@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Expanded extends Formatter
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->indentLevel = 0;
|
||||
$this->indentChar = ' ';
|
||||
$this->break = "\n";
|
||||
$this->open = ' {';
|
||||
$this->close = '}';
|
||||
$this->tagSeparator = ', ';
|
||||
$this->assignSeparator = ': ';
|
||||
$this->keepSemicolons = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function indentStr()
|
||||
{
|
||||
return str_repeat($this->indentChar, $this->indentLevel);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function blockLines(OutputBlock $block)
|
||||
{
|
||||
$inner = $this->indentStr();
|
||||
|
||||
$glue = $this->break . $inner;
|
||||
|
||||
foreach ($block->lines as $index => $line) {
|
||||
if (substr($line, 0, 2) === '/*') {
|
||||
$replacedLine = preg_replace('/\r\n?|\n|\f/', $this->break, $line);
|
||||
assert($replacedLine !== null);
|
||||
$block->lines[$index] = $replacedLine;
|
||||
}
|
||||
}
|
||||
|
||||
$this->write($inner . implode($glue, $block->lines));
|
||||
|
||||
if (empty($block->selectors) || ! empty($block->children)) {
|
||||
$this->write($this->break);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
use ScssPhp\ScssPhp\Formatter;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
|
||||
/**
|
||||
* Nested formatter
|
||||
*
|
||||
* @author Leaf Corcoran <leafot@gmail.com>
|
||||
*
|
||||
* @deprecated since 1.4.0. Use the Expanded formatter instead.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Nested extends Formatter
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $depth;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
@trigger_error('The Nested formatter is deprecated since 1.4.0. Use the Expanded formatter instead.', E_USER_DEPRECATED);
|
||||
|
||||
$this->indentLevel = 0;
|
||||
$this->indentChar = ' ';
|
||||
$this->break = "\n";
|
||||
$this->open = ' {';
|
||||
$this->close = ' }';
|
||||
$this->tagSeparator = ', ';
|
||||
$this->assignSeparator = ': ';
|
||||
$this->keepSemicolons = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function indentStr()
|
||||
{
|
||||
$n = $this->depth - 1;
|
||||
|
||||
return str_repeat($this->indentChar, max($this->indentLevel + $n, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function blockLines(OutputBlock $block)
|
||||
{
|
||||
$inner = $this->indentStr();
|
||||
$glue = $this->break . $inner;
|
||||
|
||||
foreach ($block->lines as $index => $line) {
|
||||
if (substr($line, 0, 2) === '/*') {
|
||||
$replacedLine = preg_replace('/\r\n?|\n|\f/', $this->break, $line);
|
||||
assert($replacedLine !== null);
|
||||
$block->lines[$index] = $replacedLine;
|
||||
}
|
||||
}
|
||||
|
||||
$this->write($inner . implode($glue, $block->lines));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function block(OutputBlock $block)
|
||||
{
|
||||
static $depths;
|
||||
static $downLevel;
|
||||
static $closeBlock;
|
||||
static $previousEmpty;
|
||||
static $previousHasSelector;
|
||||
|
||||
if ($block->type === 'root') {
|
||||
$depths = [ 0 ];
|
||||
$downLevel = '';
|
||||
$closeBlock = '';
|
||||
$this->depth = 0;
|
||||
$previousEmpty = false;
|
||||
$previousHasSelector = false;
|
||||
}
|
||||
|
||||
$isMediaOrDirective = \in_array($block->type, [Type::T_DIRECTIVE, Type::T_MEDIA]);
|
||||
$isSupport = ($block->type === Type::T_DIRECTIVE
|
||||
&& $block->selectors && strpos(implode('', $block->selectors), '@supports') !== false);
|
||||
|
||||
while ($block->depth < end($depths) || ($block->depth == 1 && end($depths) == 1)) {
|
||||
array_pop($depths);
|
||||
$this->depth--;
|
||||
|
||||
if (
|
||||
! $this->depth && ($block->depth <= 1 || (! $this->indentLevel && $block->type === Type::T_COMMENT)) &&
|
||||
(($block->selectors && ! $isMediaOrDirective) || $previousHasSelector)
|
||||
) {
|
||||
$downLevel = $this->break;
|
||||
}
|
||||
|
||||
if (empty($block->lines) && empty($block->children)) {
|
||||
$previousEmpty = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($block->lines) && empty($block->children)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->currentBlock = $block;
|
||||
|
||||
if (! empty($block->lines) || (! empty($block->children) && ($this->depth < 1 || $isSupport))) {
|
||||
if ($block->depth > end($depths)) {
|
||||
if (! $previousEmpty || $this->depth < 1) {
|
||||
$this->depth++;
|
||||
|
||||
$depths[] = $block->depth;
|
||||
} else {
|
||||
// keep the current depth unchanged but take the block depth as a new reference for following blocks
|
||||
array_pop($depths);
|
||||
|
||||
$depths[] = $block->depth;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$previousEmpty = ($block->type === Type::T_COMMENT);
|
||||
$previousHasSelector = false;
|
||||
|
||||
if (! empty($block->selectors)) {
|
||||
if ($closeBlock) {
|
||||
$this->write($closeBlock);
|
||||
$closeBlock = '';
|
||||
}
|
||||
|
||||
if ($downLevel) {
|
||||
$this->write($downLevel);
|
||||
$downLevel = '';
|
||||
}
|
||||
|
||||
$this->blockSelectors($block);
|
||||
|
||||
$this->indentLevel++;
|
||||
}
|
||||
|
||||
if (! empty($block->lines)) {
|
||||
if ($closeBlock) {
|
||||
$this->write($closeBlock);
|
||||
$closeBlock = '';
|
||||
}
|
||||
|
||||
if ($downLevel) {
|
||||
$this->write($downLevel);
|
||||
$downLevel = '';
|
||||
}
|
||||
|
||||
$this->blockLines($block);
|
||||
|
||||
$closeBlock = $this->break;
|
||||
}
|
||||
|
||||
if (! empty($block->children)) {
|
||||
if ($this->depth > 0 && ($isMediaOrDirective || ! $this->hasFlatChild($block))) {
|
||||
array_pop($depths);
|
||||
|
||||
$this->depth--;
|
||||
$this->blockChildren($block);
|
||||
$this->depth++;
|
||||
|
||||
$depths[] = $block->depth;
|
||||
} else {
|
||||
$this->blockChildren($block);
|
||||
}
|
||||
}
|
||||
|
||||
// reclear to not be spoiled by children if T_DIRECTIVE
|
||||
if ($block->type === Type::T_DIRECTIVE) {
|
||||
$previousHasSelector = false;
|
||||
}
|
||||
|
||||
if (! empty($block->selectors)) {
|
||||
$this->indentLevel--;
|
||||
|
||||
if (! $this->keepSemicolons) {
|
||||
$this->strippedSemicolon = '';
|
||||
}
|
||||
|
||||
$this->write($this->close);
|
||||
|
||||
$closeBlock = $this->break;
|
||||
|
||||
if ($this->depth > 1 && ! empty($block->children)) {
|
||||
array_pop($depths);
|
||||
$this->depth--;
|
||||
}
|
||||
|
||||
if (! $isMediaOrDirective) {
|
||||
$previousHasSelector = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($block->type === 'root') {
|
||||
$this->write($this->break);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Block has flat child
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Formatter\OutputBlock $block
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function hasFlatChild($block)
|
||||
{
|
||||
foreach ($block->children as $child) {
|
||||
if (empty($child->selectors)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Formatter;
|
||||
|
||||
/**
|
||||
* Output block
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class OutputBlock
|
||||
{
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $depth;
|
||||
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
public $selectors;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
public $lines;
|
||||
|
||||
/**
|
||||
* @var OutputBlock[]
|
||||
*/
|
||||
public $children;
|
||||
|
||||
/**
|
||||
* @var OutputBlock|null
|
||||
*/
|
||||
public $parent;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
public $sourceName;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*/
|
||||
public $sourceLine;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*/
|
||||
public $sourceColumn;
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Logger;
|
||||
|
||||
/**
|
||||
* Interface implemented by loggers for warnings and debug messages.
|
||||
*
|
||||
* The official Sass implementation recommends that loggers report the
|
||||
* messages immediately rather than waiting for the end of the
|
||||
* compilation, to provide a better debugging experience when the
|
||||
* compilation does not end (error or infinite loop after the warning
|
||||
* for instance).
|
||||
*/
|
||||
interface LoggerInterface
|
||||
{
|
||||
/**
|
||||
* Emits a warning with the given message.
|
||||
*
|
||||
* If $deprecation is true, it indicates that this is a deprecation
|
||||
* warning. Implementations should surface all this information to
|
||||
* the end user.
|
||||
*
|
||||
* @param string $message
|
||||
* @param bool $deprecation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function warn($message, $deprecation = false);
|
||||
|
||||
/**
|
||||
* Emits a debugging message.
|
||||
*
|
||||
* @param string $message
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function debug($message);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Logger;
|
||||
|
||||
/**
|
||||
* A logger that silently ignores all messages.
|
||||
*
|
||||
* @final
|
||||
*/
|
||||
class QuietLogger implements LoggerInterface
|
||||
{
|
||||
public function warn($message, $deprecation = false)
|
||||
{
|
||||
}
|
||||
|
||||
public function debug($message)
|
||||
{
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Logger;
|
||||
|
||||
/**
|
||||
* A logger that prints to a PHP stream (for instance stderr)
|
||||
*
|
||||
* @final
|
||||
*/
|
||||
class StreamLogger implements LoggerInterface
|
||||
{
|
||||
private $stream;
|
||||
private $closeOnDestruct;
|
||||
|
||||
/**
|
||||
* @param resource $stream A stream resource
|
||||
* @param bool $closeOnDestruct If true, takes ownership of the stream and close it on destruct to avoid leaks.
|
||||
*/
|
||||
public function __construct($stream, $closeOnDestruct = false)
|
||||
{
|
||||
$this->stream = $stream;
|
||||
$this->closeOnDestruct = $closeOnDestruct;
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
if ($this->closeOnDestruct) {
|
||||
fclose($this->stream);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function warn($message, $deprecation = false)
|
||||
{
|
||||
$prefix = ($deprecation ? 'DEPRECATION ' : '') . 'WARNING: ';
|
||||
|
||||
fwrite($this->stream, $prefix . $message . "\n\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function debug($message)
|
||||
{
|
||||
fwrite($this->stream, $message . "\n");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
/**
|
||||
* Base node
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
abstract class Node
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $sourceIndex;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*/
|
||||
public $sourceLine;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*/
|
||||
public $sourceColumn;
|
||||
}
|
||||
@@ -0,0 +1,834 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\Node;
|
||||
|
||||
use ScssPhp\ScssPhp\Base\Range;
|
||||
use ScssPhp\ScssPhp\Compiler;
|
||||
use ScssPhp\ScssPhp\Exception\RangeException;
|
||||
use ScssPhp\ScssPhp\Exception\SassScriptException;
|
||||
use ScssPhp\ScssPhp\Node;
|
||||
use ScssPhp\ScssPhp\Type;
|
||||
use ScssPhp\ScssPhp\Util;
|
||||
|
||||
/**
|
||||
* Dimension + optional units
|
||||
*
|
||||
* {@internal
|
||||
* This is a work-in-progress.
|
||||
*
|
||||
* The \ArrayAccess interface is temporary until the migration is complete.
|
||||
* }}
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @template-implements \ArrayAccess<int, mixed>
|
||||
*/
|
||||
class Number extends Node implements \ArrayAccess
|
||||
{
|
||||
const PRECISION = 10;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @deprecated use {Number::PRECISION} instead to read the precision. Configuring it is not supported anymore.
|
||||
*/
|
||||
public static $precision = self::PRECISION;
|
||||
|
||||
/**
|
||||
* @see http://www.w3.org/TR/2012/WD-css3-values-20120308/
|
||||
*
|
||||
* @var array
|
||||
* @phpstan-var array<string, array<string, float|int>>
|
||||
*/
|
||||
protected static $unitTable = [
|
||||
'in' => [
|
||||
'in' => 1,
|
||||
'pc' => 6,
|
||||
'pt' => 72,
|
||||
'px' => 96,
|
||||
'cm' => 2.54,
|
||||
'mm' => 25.4,
|
||||
'q' => 101.6,
|
||||
],
|
||||
'turn' => [
|
||||
'deg' => 360,
|
||||
'grad' => 400,
|
||||
'rad' => 6.28318530717958647692528676, // 2 * M_PI
|
||||
'turn' => 1,
|
||||
],
|
||||
's' => [
|
||||
's' => 1,
|
||||
'ms' => 1000,
|
||||
],
|
||||
'Hz' => [
|
||||
'Hz' => 1,
|
||||
'kHz' => 0.001,
|
||||
],
|
||||
'dpi' => [
|
||||
'dpi' => 1,
|
||||
'dpcm' => 1 / 2.54,
|
||||
'dppx' => 1 / 96,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* @var int|float
|
||||
*/
|
||||
private $dimension;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
* @phpstan-var list<string>
|
||||
*/
|
||||
private $numeratorUnits;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
* @phpstan-var list<string>
|
||||
*/
|
||||
private $denominatorUnits;
|
||||
|
||||
/**
|
||||
* Initialize number
|
||||
*
|
||||
* @param int|float $dimension
|
||||
* @param string[]|string $numeratorUnits
|
||||
* @param string[] $denominatorUnits
|
||||
*
|
||||
* @phpstan-param list<string>|string $numeratorUnits
|
||||
* @phpstan-param list<string> $denominatorUnits
|
||||
*/
|
||||
public function __construct($dimension, $numeratorUnits, array $denominatorUnits = [])
|
||||
{
|
||||
if (is_string($numeratorUnits)) {
|
||||
$numeratorUnits = $numeratorUnits ? [$numeratorUnits] : [];
|
||||
} elseif (isset($numeratorUnits['numerator_units'], $numeratorUnits['denominator_units'])) {
|
||||
// TODO get rid of this once `$number[2]` is not used anymore
|
||||
$denominatorUnits = $numeratorUnits['denominator_units'];
|
||||
$numeratorUnits = $numeratorUnits['numerator_units'];
|
||||
}
|
||||
|
||||
$this->dimension = $dimension;
|
||||
$this->numeratorUnits = $numeratorUnits;
|
||||
$this->denominatorUnits = $denominatorUnits;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float|int
|
||||
*/
|
||||
public function getDimension()
|
||||
{
|
||||
return $this->dimension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getNumeratorUnits()
|
||||
{
|
||||
return $this->numeratorUnits;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getDenominatorUnits()
|
||||
{
|
||||
return $this->denominatorUnits;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
if ($offset === -3) {
|
||||
return ! \is_null($this->sourceColumn);
|
||||
}
|
||||
|
||||
if ($offset === -2) {
|
||||
return ! \is_null($this->sourceLine);
|
||||
}
|
||||
|
||||
if (
|
||||
$offset === -1 ||
|
||||
$offset === 0 ||
|
||||
$offset === 1 ||
|
||||
$offset === 2
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
switch ($offset) {
|
||||
case -3:
|
||||
return $this->sourceColumn;
|
||||
|
||||
case -2:
|
||||
return $this->sourceLine;
|
||||
|
||||
case -1:
|
||||
return $this->sourceIndex;
|
||||
|
||||
case 0:
|
||||
return Type::T_NUMBER;
|
||||
|
||||
case 1:
|
||||
return $this->dimension;
|
||||
|
||||
case 2:
|
||||
return array('numerator_units' => $this->numeratorUnits, 'denominator_units' => $this->denominatorUnits);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
throw new \BadMethodCallException('Number is immutable');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
throw new \BadMethodCallException('Number is immutable');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the number is unitless
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function unitless()
|
||||
{
|
||||
return \count($this->numeratorUnits) === 0 && \count($this->denominatorUnits) === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the number has any units
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasUnits()
|
||||
{
|
||||
return !$this->unitless();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the number has exactly this unit
|
||||
*
|
||||
* @param string $unit
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasUnit($unit)
|
||||
{
|
||||
return \count($this->numeratorUnits) === 1 && \count($this->denominatorUnits) === 0 && $this->numeratorUnits[0] === $unit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns unit(s) as the product of numerator units divided by the product of denominator units
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function unitStr()
|
||||
{
|
||||
if ($this->unitless()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return self::getUnitString($this->numeratorUnits, $this->denominatorUnits);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float|int $min
|
||||
* @param float|int $max
|
||||
* @param string|null $name
|
||||
*
|
||||
* @return float|int
|
||||
* @throws SassScriptException
|
||||
*/
|
||||
public function valueInRange($min, $max, $name = null)
|
||||
{
|
||||
try {
|
||||
return Util::checkRange('', new Range($min, $max), $this);
|
||||
} catch (RangeException $e) {
|
||||
throw SassScriptException::forArgument(sprintf('Expected %s to be within %s%s and %s%3$s.', $this, $min, $this->unitStr(), $max), $name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float|int $min
|
||||
* @param float|int $max
|
||||
* @param string $name
|
||||
* @param string $unit
|
||||
*
|
||||
* @return float|int
|
||||
* @throws SassScriptException
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
public function valueInRangeWithUnit($min, $max, $name, $unit)
|
||||
{
|
||||
try {
|
||||
return Util::checkRange('', new Range($min, $max), $this);
|
||||
} catch (RangeException $e) {
|
||||
throw SassScriptException::forArgument(sprintf('Expected %s to be within %s%s and %s%3$s.', $this, $min, $unit, $max), $name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $varName
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function assertNoUnits($varName = null)
|
||||
{
|
||||
if ($this->unitless()) {
|
||||
return;
|
||||
}
|
||||
|
||||
throw SassScriptException::forArgument(sprintf('Expected %s to have no units.', $this), $varName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $unit
|
||||
* @param string|null $varName
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function assertUnit($unit, $varName = null)
|
||||
{
|
||||
if ($this->hasUnit($unit)) {
|
||||
return;
|
||||
}
|
||||
|
||||
throw SassScriptException::forArgument(sprintf('Expected %s to have unit "%s".', $this, $unit), $varName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function assertSameUnitOrUnitless(Number $other)
|
||||
{
|
||||
if ($other->unitless()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->numeratorUnits === $other->numeratorUnits && $this->denominatorUnits === $other->denominatorUnits) {
|
||||
return;
|
||||
}
|
||||
|
||||
throw new SassScriptException(sprintf(
|
||||
'Incompatible units %s and %s.',
|
||||
self::getUnitString($this->numeratorUnits, $this->denominatorUnits),
|
||||
self::getUnitString($other->numeratorUnits, $other->denominatorUnits)
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a copy of this number, converted to the units represented by $newNumeratorUnits and $newDenominatorUnits.
|
||||
*
|
||||
* This does not throw an error if this number is unitless and
|
||||
* $newNumeratorUnits/$newDenominatorUnits are not empty, or vice versa. Instead,
|
||||
* it treats all unitless numbers as convertible to and from all units without
|
||||
* changing the value.
|
||||
*
|
||||
* @param string[] $newNumeratorUnits
|
||||
* @param string[] $newDenominatorUnits
|
||||
*
|
||||
* @return Number
|
||||
*
|
||||
* @phpstan-param list<string> $newNumeratorUnits
|
||||
* @phpstan-param list<string> $newDenominatorUnits
|
||||
*
|
||||
* @throws SassScriptException if this number's units are not compatible with $newNumeratorUnits and $newDenominatorUnits
|
||||
*/
|
||||
public function coerce(array $newNumeratorUnits, array $newDenominatorUnits)
|
||||
{
|
||||
return new Number($this->valueInUnits($newNumeratorUnits, $newDenominatorUnits), $newNumeratorUnits, $newDenominatorUnits);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isComparableTo(Number $other)
|
||||
{
|
||||
if ($this->unitless() || $other->unitless()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
$this->greaterThan($other);
|
||||
return true;
|
||||
} catch (SassScriptException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function lessThan(Number $other)
|
||||
{
|
||||
return $this->coerceUnits($other, function ($num1, $num2) {
|
||||
return $num1 < $num2;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function lessThanOrEqual(Number $other)
|
||||
{
|
||||
return $this->coerceUnits($other, function ($num1, $num2) {
|
||||
return $num1 <= $num2;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function greaterThan(Number $other)
|
||||
{
|
||||
return $this->coerceUnits($other, function ($num1, $num2) {
|
||||
return $num1 > $num2;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function greaterThanOrEqual(Number $other)
|
||||
{
|
||||
return $this->coerceUnits($other, function ($num1, $num2) {
|
||||
return $num1 >= $num2;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return Number
|
||||
*/
|
||||
public function plus(Number $other)
|
||||
{
|
||||
return $this->coerceNumber($other, function ($num1, $num2) {
|
||||
return $num1 + $num2;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return Number
|
||||
*/
|
||||
public function minus(Number $other)
|
||||
{
|
||||
return $this->coerceNumber($other, function ($num1, $num2) {
|
||||
return $num1 - $num2;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Number
|
||||
*/
|
||||
public function unaryMinus()
|
||||
{
|
||||
return new Number(-$this->dimension, $this->numeratorUnits, $this->denominatorUnits);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return Number
|
||||
*/
|
||||
public function modulo(Number $other)
|
||||
{
|
||||
return $this->coerceNumber($other, function ($num1, $num2) {
|
||||
if ($num2 == 0) {
|
||||
return NAN;
|
||||
}
|
||||
|
||||
$result = fmod($num1, $num2);
|
||||
|
||||
if ($result == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ($num2 < 0 xor $num1 < 0) {
|
||||
$result += $num2;
|
||||
}
|
||||
|
||||
return $result;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return Number
|
||||
*/
|
||||
public function times(Number $other)
|
||||
{
|
||||
return $this->multiplyUnits($this->dimension * $other->dimension, $this->numeratorUnits, $this->denominatorUnits, $other->numeratorUnits, $other->denominatorUnits);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return Number
|
||||
*/
|
||||
public function dividedBy(Number $other)
|
||||
{
|
||||
if ($other->dimension == 0) {
|
||||
if ($this->dimension == 0) {
|
||||
$value = NAN;
|
||||
} elseif ($this->dimension > 0) {
|
||||
$value = INF;
|
||||
} else {
|
||||
$value = -INF;
|
||||
}
|
||||
} else {
|
||||
$value = $this->dimension / $other->dimension;
|
||||
}
|
||||
|
||||
return $this->multiplyUnits($value, $this->numeratorUnits, $this->denominatorUnits, $other->denominatorUnits, $other->numeratorUnits);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function equals(Number $other)
|
||||
{
|
||||
// Unitless numbers are convertable to unit numbers, but not equal, so we special-case unitless here.
|
||||
if ($this->unitless() !== $other->unitless()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// In Sass, neither NaN nor Infinity are equal to themselves, while PHP defines INF==INF
|
||||
if (is_nan($this->dimension) || is_nan($other->dimension) || !is_finite($this->dimension) || !is_finite($other->dimension)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->unitless()) {
|
||||
return round($this->dimension, self::PRECISION) == round($other->dimension, self::PRECISION);
|
||||
}
|
||||
|
||||
try {
|
||||
return $this->coerceUnits($other, function ($num1, $num2) {
|
||||
return round($num1,self::PRECISION) == round($num2, self::PRECISION);
|
||||
});
|
||||
} catch (SassScriptException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output number
|
||||
*
|
||||
* @param \ScssPhp\ScssPhp\Compiler $compiler
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function output(Compiler $compiler = null)
|
||||
{
|
||||
$dimension = round($this->dimension, self::PRECISION);
|
||||
|
||||
if (is_nan($dimension)) {
|
||||
return 'NaN';
|
||||
}
|
||||
|
||||
if ($dimension === INF) {
|
||||
return 'Infinity';
|
||||
}
|
||||
|
||||
if ($dimension === -INF) {
|
||||
return '-Infinity';
|
||||
}
|
||||
|
||||
if ($compiler) {
|
||||
$unit = $this->unitStr();
|
||||
} elseif (isset($this->numeratorUnits[0])) {
|
||||
$unit = $this->numeratorUnits[0];
|
||||
} else {
|
||||
$unit = '';
|
||||
}
|
||||
|
||||
$dimension = number_format($dimension, self::PRECISION, '.', '');
|
||||
|
||||
return rtrim(rtrim($dimension, '0'), '.') . $unit;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return $this->output();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
* @param callable $operation
|
||||
*
|
||||
* @return Number
|
||||
*
|
||||
* @phpstan-param callable(int|float, int|float): (int|float) $operation
|
||||
*/
|
||||
private function coerceNumber(Number $other, $operation)
|
||||
{
|
||||
$result = $this->coerceUnits($other, $operation);
|
||||
|
||||
if (!$this->unitless()) {
|
||||
return new Number($result, $this->numeratorUnits, $this->denominatorUnits);
|
||||
}
|
||||
|
||||
return new Number($result, $other->numeratorUnits, $other->denominatorUnits);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Number $other
|
||||
* @param callable $operation
|
||||
*
|
||||
* @return mixed
|
||||
*
|
||||
* @phpstan-template T
|
||||
* @phpstan-param callable(int|float, int|float): T $operation
|
||||
* @phpstan-return T
|
||||
*/
|
||||
private function coerceUnits(Number $other, $operation)
|
||||
{
|
||||
if (!$this->unitless()) {
|
||||
$num1 = $this->dimension;
|
||||
$num2 = $other->valueInUnits($this->numeratorUnits, $this->denominatorUnits);
|
||||
} else {
|
||||
$num1 = $this->valueInUnits($other->numeratorUnits, $other->denominatorUnits);
|
||||
$num2 = $other->dimension;
|
||||
}
|
||||
|
||||
return \call_user_func($operation, $num1, $num2);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $numeratorUnits
|
||||
* @param string[] $denominatorUnits
|
||||
*
|
||||
* @return int|float
|
||||
*
|
||||
* @phpstan-param list<string> $numeratorUnits
|
||||
* @phpstan-param list<string> $denominatorUnits
|
||||
*
|
||||
* @throws SassScriptException if this number's units are not compatible with $numeratorUnits and $denominatorUnits
|
||||
*/
|
||||
private function valueInUnits(array $numeratorUnits, array $denominatorUnits)
|
||||
{
|
||||
if (
|
||||
$this->unitless()
|
||||
|| (\count($numeratorUnits) === 0 && \count($denominatorUnits) === 0)
|
||||
|| ($this->numeratorUnits === $numeratorUnits && $this->denominatorUnits === $denominatorUnits)
|
||||
) {
|
||||
return $this->dimension;
|
||||
}
|
||||
|
||||
$value = $this->dimension;
|
||||
$oldNumerators = $this->numeratorUnits;
|
||||
|
||||
foreach ($numeratorUnits as $newNumerator) {
|
||||
foreach ($oldNumerators as $key => $oldNumerator) {
|
||||
$conversionFactor = self::getConversionFactor($newNumerator, $oldNumerator);
|
||||
|
||||
if (\is_null($conversionFactor)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value *= $conversionFactor;
|
||||
unset($oldNumerators[$key]);
|
||||
continue 2;
|
||||
}
|
||||
|
||||
throw new SassScriptException(sprintf(
|
||||
'Incompatible units %s and %s.',
|
||||
self::getUnitString($this->numeratorUnits, $this->denominatorUnits),
|
||||
self::getUnitString($numeratorUnits, $denominatorUnits)
|
||||
));
|
||||
}
|
||||
|
||||
$oldDenominators = $this->denominatorUnits;
|
||||
|
||||
foreach ($denominatorUnits as $newDenominator) {
|
||||
foreach ($oldDenominators as $key => $oldDenominator) {
|
||||
$conversionFactor = self::getConversionFactor($newDenominator, $oldDenominator);
|
||||
|
||||
if (\is_null($conversionFactor)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value /= $conversionFactor;
|
||||
unset($oldDenominators[$key]);
|
||||
continue 2;
|
||||
}
|
||||
|
||||
throw new SassScriptException(sprintf(
|
||||
'Incompatible units %s and %s.',
|
||||
self::getUnitString($this->numeratorUnits, $this->denominatorUnits),
|
||||
self::getUnitString($numeratorUnits, $denominatorUnits)
|
||||
));
|
||||
}
|
||||
|
||||
if (\count($oldNumerators) || \count($oldDenominators)) {
|
||||
throw new SassScriptException(sprintf(
|
||||
'Incompatible units %s and %s.',
|
||||
self::getUnitString($this->numeratorUnits, $this->denominatorUnits),
|
||||
self::getUnitString($numeratorUnits, $denominatorUnits)
|
||||
));
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int|float $value
|
||||
* @param string[] $numerators1
|
||||
* @param string[] $denominators1
|
||||
* @param string[] $numerators2
|
||||
* @param string[] $denominators2
|
||||
*
|
||||
* @return Number
|
||||
*
|
||||
* @phpstan-param list<string> $numerators1
|
||||
* @phpstan-param list<string> $denominators1
|
||||
* @phpstan-param list<string> $numerators2
|
||||
* @phpstan-param list<string> $denominators2
|
||||
*/
|
||||
private function multiplyUnits($value, array $numerators1, array $denominators1, array $numerators2, array $denominators2)
|
||||
{
|
||||
$newNumerators = array();
|
||||
|
||||
foreach ($numerators1 as $numerator) {
|
||||
foreach ($denominators2 as $key => $denominator) {
|
||||
$conversionFactor = self::getConversionFactor($numerator, $denominator);
|
||||
|
||||
if (\is_null($conversionFactor)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value /= $conversionFactor;
|
||||
unset($denominators2[$key]);
|
||||
continue 2;
|
||||
}
|
||||
|
||||
$newNumerators[] = $numerator;
|
||||
}
|
||||
|
||||
foreach ($numerators2 as $numerator) {
|
||||
foreach ($denominators1 as $key => $denominator) {
|
||||
$conversionFactor = self::getConversionFactor($numerator, $denominator);
|
||||
|
||||
if (\is_null($conversionFactor)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value /= $conversionFactor;
|
||||
unset($denominators1[$key]);
|
||||
continue 2;
|
||||
}
|
||||
|
||||
$newNumerators[] = $numerator;
|
||||
}
|
||||
|
||||
$newDenominators = array_values(array_merge($denominators1, $denominators2));
|
||||
|
||||
return new Number($value, $newNumerators, $newDenominators);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of [unit1]s per [unit2].
|
||||
*
|
||||
* Equivalently, `1unit1 * conversionFactor(unit1, unit2) = 1unit2`.
|
||||
*
|
||||
* @param string $unit1
|
||||
* @param string $unit2
|
||||
*
|
||||
* @return float|int|null
|
||||
*/
|
||||
private static function getConversionFactor($unit1, $unit2)
|
||||
{
|
||||
if ($unit1 === $unit2) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach (static::$unitTable as $unitVariants) {
|
||||
if (isset($unitVariants[$unit1]) && isset($unitVariants[$unit2])) {
|
||||
return $unitVariants[$unit1] / $unitVariants[$unit2];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns unit(s) as the product of numerator units divided by the product of denominator units
|
||||
*
|
||||
* @param string[] $numerators
|
||||
* @param string[] $denominators
|
||||
*
|
||||
* @phpstan-param list<string> $numerators
|
||||
* @phpstan-param list<string> $denominators
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function getUnitString(array $numerators, array $denominators)
|
||||
{
|
||||
if (!\count($numerators)) {
|
||||
if (\count($denominators) === 0) {
|
||||
return 'no units';
|
||||
}
|
||||
|
||||
if (\count($denominators) === 1) {
|
||||
return $denominators[0] . '^-1';
|
||||
}
|
||||
|
||||
return '(' . implode('*', $denominators) . ')^-1';
|
||||
}
|
||||
|
||||
return implode('*', $numerators) . (\count($denominators) ? '/' . implode('*', $denominators) : '');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
final class OutputStyle
|
||||
{
|
||||
const EXPANDED = 'expanded';
|
||||
const COMPRESSED = 'compressed';
|
||||
|
||||
/**
|
||||
* Converts a string to an output style.
|
||||
*
|
||||
* Using this method allows to write code which will support both
|
||||
* versions 1.12+ and 2.0 of Scssphp. In 2.0, OutputStyle will be
|
||||
* an enum instead of using string constants.
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @return self::*
|
||||
*/
|
||||
public static function fromString($string)
|
||||
{
|
||||
switch ($string) {
|
||||
case 'expanded':
|
||||
return self::EXPANDED;
|
||||
|
||||
case 'compressed':
|
||||
return self::COMPRESSED;
|
||||
|
||||
default:
|
||||
throw new \InvalidArgumentException('Invalid output style');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an output style to a string supported by {@see OutputStyle::fromString()}.
|
||||
*
|
||||
* Using this method allows to write code which will support both
|
||||
* versions 1.12+ and 2.0 of Scssphp. In 2.0, OutputStyle will be
|
||||
* an enum instead of using string constants.
|
||||
* The returned string representation is guaranteed to be compatible
|
||||
* between 1.12 and 2.0.
|
||||
*
|
||||
* @param self::* $outputStyle
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function toString($outputStyle)
|
||||
{
|
||||
return $outputStyle;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,187 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\SourceMap;
|
||||
|
||||
/**
|
||||
* Base 64 Encode/Decode
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Base64
|
||||
{
|
||||
/**
|
||||
* @var array<int, string>
|
||||
*/
|
||||
private static $encodingMap = [
|
||||
0 => 'A',
|
||||
1 => 'B',
|
||||
2 => 'C',
|
||||
3 => 'D',
|
||||
4 => 'E',
|
||||
5 => 'F',
|
||||
6 => 'G',
|
||||
7 => 'H',
|
||||
8 => 'I',
|
||||
9 => 'J',
|
||||
10 => 'K',
|
||||
11 => 'L',
|
||||
12 => 'M',
|
||||
13 => 'N',
|
||||
14 => 'O',
|
||||
15 => 'P',
|
||||
16 => 'Q',
|
||||
17 => 'R',
|
||||
18 => 'S',
|
||||
19 => 'T',
|
||||
20 => 'U',
|
||||
21 => 'V',
|
||||
22 => 'W',
|
||||
23 => 'X',
|
||||
24 => 'Y',
|
||||
25 => 'Z',
|
||||
26 => 'a',
|
||||
27 => 'b',
|
||||
28 => 'c',
|
||||
29 => 'd',
|
||||
30 => 'e',
|
||||
31 => 'f',
|
||||
32 => 'g',
|
||||
33 => 'h',
|
||||
34 => 'i',
|
||||
35 => 'j',
|
||||
36 => 'k',
|
||||
37 => 'l',
|
||||
38 => 'm',
|
||||
39 => 'n',
|
||||
40 => 'o',
|
||||
41 => 'p',
|
||||
42 => 'q',
|
||||
43 => 'r',
|
||||
44 => 's',
|
||||
45 => 't',
|
||||
46 => 'u',
|
||||
47 => 'v',
|
||||
48 => 'w',
|
||||
49 => 'x',
|
||||
50 => 'y',
|
||||
51 => 'z',
|
||||
52 => '0',
|
||||
53 => '1',
|
||||
54 => '2',
|
||||
55 => '3',
|
||||
56 => '4',
|
||||
57 => '5',
|
||||
58 => '6',
|
||||
59 => '7',
|
||||
60 => '8',
|
||||
61 => '9',
|
||||
62 => '+',
|
||||
63 => '/',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array<string|int, int>
|
||||
*/
|
||||
private static $decodingMap = [
|
||||
'A' => 0,
|
||||
'B' => 1,
|
||||
'C' => 2,
|
||||
'D' => 3,
|
||||
'E' => 4,
|
||||
'F' => 5,
|
||||
'G' => 6,
|
||||
'H' => 7,
|
||||
'I' => 8,
|
||||
'J' => 9,
|
||||
'K' => 10,
|
||||
'L' => 11,
|
||||
'M' => 12,
|
||||
'N' => 13,
|
||||
'O' => 14,
|
||||
'P' => 15,
|
||||
'Q' => 16,
|
||||
'R' => 17,
|
||||
'S' => 18,
|
||||
'T' => 19,
|
||||
'U' => 20,
|
||||
'V' => 21,
|
||||
'W' => 22,
|
||||
'X' => 23,
|
||||
'Y' => 24,
|
||||
'Z' => 25,
|
||||
'a' => 26,
|
||||
'b' => 27,
|
||||
'c' => 28,
|
||||
'd' => 29,
|
||||
'e' => 30,
|
||||
'f' => 31,
|
||||
'g' => 32,
|
||||
'h' => 33,
|
||||
'i' => 34,
|
||||
'j' => 35,
|
||||
'k' => 36,
|
||||
'l' => 37,
|
||||
'm' => 38,
|
||||
'n' => 39,
|
||||
'o' => 40,
|
||||
'p' => 41,
|
||||
'q' => 42,
|
||||
'r' => 43,
|
||||
's' => 44,
|
||||
't' => 45,
|
||||
'u' => 46,
|
||||
'v' => 47,
|
||||
'w' => 48,
|
||||
'x' => 49,
|
||||
'y' => 50,
|
||||
'z' => 51,
|
||||
0 => 52,
|
||||
1 => 53,
|
||||
2 => 54,
|
||||
3 => 55,
|
||||
4 => 56,
|
||||
5 => 57,
|
||||
6 => 58,
|
||||
7 => 59,
|
||||
8 => 60,
|
||||
9 => 61,
|
||||
'+' => 62,
|
||||
'/' => 63,
|
||||
];
|
||||
|
||||
/**
|
||||
* Convert to base64
|
||||
*
|
||||
* @param int $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function encode($value)
|
||||
{
|
||||
return self::$encodingMap[$value];
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert from base64
|
||||
*
|
||||
* @param string $value
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public static function decode($value)
|
||||
{
|
||||
return self::$decodingMap[$value];
|
||||
}
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\SourceMap;
|
||||
|
||||
/**
|
||||
* Base 64 VLQ
|
||||
*
|
||||
* Based on the Base 64 VLQ implementation in Closure Compiler:
|
||||
* https://github.com/google/closure-compiler/blob/master/src/com/google/debugging/sourcemap/Base64VLQ.java
|
||||
*
|
||||
* Copyright 2011 The Closure Compiler Authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @author John Lenz <johnlenz@google.com>
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Base64VLQ
|
||||
{
|
||||
// A Base64 VLQ digit can represent 5 bits, so it is base-32.
|
||||
const VLQ_BASE_SHIFT = 5;
|
||||
|
||||
// A mask of bits for a VLQ digit (11111), 31 decimal.
|
||||
const VLQ_BASE_MASK = 31;
|
||||
|
||||
// The continuation bit is the 6th bit.
|
||||
const VLQ_CONTINUATION_BIT = 32;
|
||||
|
||||
/**
|
||||
* Returns the VLQ encoded value.
|
||||
*
|
||||
* @param int $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function encode($value)
|
||||
{
|
||||
$encoded = '';
|
||||
$vlq = self::toVLQSigned($value);
|
||||
|
||||
do {
|
||||
$digit = $vlq & self::VLQ_BASE_MASK;
|
||||
|
||||
//$vlq >>>= self::VLQ_BASE_SHIFT; // unsigned right shift
|
||||
$vlq = (($vlq >> 1) & PHP_INT_MAX) >> (self::VLQ_BASE_SHIFT - 1);
|
||||
|
||||
if ($vlq > 0) {
|
||||
$digit |= self::VLQ_CONTINUATION_BIT;
|
||||
}
|
||||
|
||||
$encoded .= Base64::encode($digit);
|
||||
} while ($vlq > 0);
|
||||
|
||||
return $encoded;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decodes VLQValue.
|
||||
*
|
||||
* @param string $str
|
||||
* @param int $index
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public static function decode($str, &$index)
|
||||
{
|
||||
$result = 0;
|
||||
$shift = 0;
|
||||
|
||||
do {
|
||||
$c = $str[$index++];
|
||||
$digit = Base64::decode($c);
|
||||
$continuation = ($digit & self::VLQ_CONTINUATION_BIT) != 0;
|
||||
$digit &= self::VLQ_BASE_MASK;
|
||||
$result = $result + ($digit << $shift);
|
||||
$shift = $shift + self::VLQ_BASE_SHIFT;
|
||||
} while ($continuation);
|
||||
|
||||
return self::fromVLQSigned($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts from a two-complement value to a value where the sign bit is
|
||||
* is placed in the least significant bit. For example, as decimals:
|
||||
* 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
|
||||
* 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
|
||||
*
|
||||
* @param int $value
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
private static function toVLQSigned($value)
|
||||
{
|
||||
if ($value < 0) {
|
||||
return ((-$value) << 1) + 1;
|
||||
}
|
||||
|
||||
return ($value << 1) + 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts to a two-complement value from a value where the sign bit is
|
||||
* is placed in the least significant bit. For example, as decimals:
|
||||
* 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
|
||||
* 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
|
||||
*
|
||||
* @param int $value
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
private static function fromVLQSigned($value)
|
||||
{
|
||||
$negate = ($value & 1) === 1;
|
||||
|
||||
//$value >>>= 1; // unsigned right shift
|
||||
$value = ($value >> 1) & PHP_INT_MAX;
|
||||
|
||||
if (! $negate) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
// We need to OR 0x80000000 here to ensure the 32nd bit (the sign bit) is
|
||||
// always set for negative numbers. If `value` were 1, (meaning `negate` is
|
||||
// true and all other bits were zeros), `value` would now be 0. -0 is just
|
||||
// 0, and doesn't flip the 32nd bit as intended. All positive numbers will
|
||||
// successfully flip the 32nd bit without issue, so it's a noop for them.
|
||||
return -$value | 0x80000000;
|
||||
}
|
||||
}
|
||||
+390
@@ -0,0 +1,390 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp\SourceMap;
|
||||
|
||||
use ScssPhp\ScssPhp\Exception\CompilerException;
|
||||
|
||||
/**
|
||||
* Source Map Generator
|
||||
*
|
||||
* {@internal Derivative of oyejorge/less.php's lib/SourceMap/Generator.php, relicensed with permission. }}
|
||||
*
|
||||
* @author Josh Schmidt <oyejorge@gmail.com>
|
||||
* @author Nicolas FRANÇOIS <nicolas.francois@frog-labs.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class SourceMapGenerator
|
||||
{
|
||||
/**
|
||||
* What version of source map does the generator generate?
|
||||
*/
|
||||
const VERSION = 3;
|
||||
|
||||
/**
|
||||
* Array of default options
|
||||
*
|
||||
* @var array
|
||||
* @phpstan-var array{sourceRoot: string, sourceMapFilename: string|null, sourceMapURL: string|null, sourceMapWriteTo: string|null, outputSourceFiles: bool, sourceMapRootpath: string, sourceMapBasepath: string}
|
||||
*/
|
||||
protected $defaultOptions = [
|
||||
// an optional source root, useful for relocating source files
|
||||
// on a server or removing repeated values in the 'sources' entry.
|
||||
// This value is prepended to the individual entries in the 'source' field.
|
||||
'sourceRoot' => '',
|
||||
|
||||
// an optional name of the generated code that this source map is associated with.
|
||||
'sourceMapFilename' => null,
|
||||
|
||||
// url of the map
|
||||
'sourceMapURL' => null,
|
||||
|
||||
// absolute path to a file to write the map to
|
||||
'sourceMapWriteTo' => null,
|
||||
|
||||
// output source contents?
|
||||
'outputSourceFiles' => false,
|
||||
|
||||
// base path for filename normalization
|
||||
'sourceMapRootpath' => '',
|
||||
|
||||
// base path for filename normalization
|
||||
'sourceMapBasepath' => ''
|
||||
];
|
||||
|
||||
/**
|
||||
* The base64 VLQ encoder
|
||||
*
|
||||
* @var \ScssPhp\ScssPhp\SourceMap\Base64VLQ
|
||||
*/
|
||||
protected $encoder;
|
||||
|
||||
/**
|
||||
* Array of mappings
|
||||
*
|
||||
* @var array
|
||||
* @phpstan-var list<array{generated_line: int, generated_column: int, original_line: int, original_column: int, source_file: string}>
|
||||
*/
|
||||
protected $mappings = [];
|
||||
|
||||
/**
|
||||
* Array of contents map
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $contentsMap = [];
|
||||
|
||||
/**
|
||||
* File to content map
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $sources = [];
|
||||
|
||||
/**
|
||||
* @var array<string, int>
|
||||
*/
|
||||
protected $sourceKeys = [];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
* @phpstan-var array{sourceRoot: string, sourceMapFilename: string|null, sourceMapURL: string|null, sourceMapWriteTo: string|null, outputSourceFiles: bool, sourceMapRootpath: string, sourceMapBasepath: string}
|
||||
*/
|
||||
private $options;
|
||||
|
||||
/**
|
||||
* @phpstan-param array{sourceRoot?: string, sourceMapFilename?: string|null, sourceMapURL?: string|null, sourceMapWriteTo?: string|null, outputSourceFiles?: bool, sourceMapRootpath?: string, sourceMapBasepath?: string} $options
|
||||
*/
|
||||
public function __construct(array $options = [])
|
||||
{
|
||||
$this->options = array_replace($this->defaultOptions, $options);
|
||||
$this->encoder = new Base64VLQ();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a mapping
|
||||
*
|
||||
* @param int $generatedLine The line number in generated file
|
||||
* @param int $generatedColumn The column number in generated file
|
||||
* @param int $originalLine The line number in original file
|
||||
* @param int $originalColumn The column number in original file
|
||||
* @param string $sourceFile The original source file
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addMapping($generatedLine, $generatedColumn, $originalLine, $originalColumn, $sourceFile)
|
||||
{
|
||||
$this->mappings[] = [
|
||||
'generated_line' => $generatedLine,
|
||||
'generated_column' => $generatedColumn,
|
||||
'original_line' => $originalLine,
|
||||
'original_column' => $originalColumn,
|
||||
'source_file' => $sourceFile
|
||||
];
|
||||
|
||||
$this->sources[$sourceFile] = $sourceFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the source map to a file
|
||||
*
|
||||
* @param string $content The content to write
|
||||
*
|
||||
* @return string|null
|
||||
*
|
||||
* @throws \ScssPhp\ScssPhp\Exception\CompilerException If the file could not be saved
|
||||
* @deprecated
|
||||
*/
|
||||
public function saveMap($content)
|
||||
{
|
||||
$file = $this->options['sourceMapWriteTo'];
|
||||
assert($file !== null);
|
||||
$dir = \dirname($file);
|
||||
|
||||
// directory does not exist
|
||||
if (! is_dir($dir)) {
|
||||
// FIXME: create the dir automatically?
|
||||
throw new CompilerException(
|
||||
sprintf('The directory "%s" does not exist. Cannot save the source map.', $dir)
|
||||
);
|
||||
}
|
||||
|
||||
// FIXME: proper saving, with dir write check!
|
||||
if (file_put_contents($file, $content) === false) {
|
||||
throw new CompilerException(sprintf('Cannot save the source map to "%s"', $file));
|
||||
}
|
||||
|
||||
return $this->options['sourceMapURL'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the JSON source map
|
||||
*
|
||||
* @param string $prefix A prefix added in the output file, which needs to shift mappings
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @see https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#
|
||||
*/
|
||||
public function generateJson($prefix = '')
|
||||
{
|
||||
$sourceMap = [];
|
||||
$mappings = $this->generateMappings($prefix);
|
||||
|
||||
// File version (always the first entry in the object) and must be a positive integer.
|
||||
$sourceMap['version'] = self::VERSION;
|
||||
|
||||
// An optional name of the generated code that this source map is associated with.
|
||||
$file = $this->options['sourceMapFilename'];
|
||||
|
||||
if ($file) {
|
||||
$sourceMap['file'] = $file;
|
||||
}
|
||||
|
||||
// An optional source root, useful for relocating source files on a server or removing repeated values in the
|
||||
// 'sources' entry. This value is prepended to the individual entries in the 'source' field.
|
||||
$root = $this->options['sourceRoot'];
|
||||
|
||||
if ($root) {
|
||||
$sourceMap['sourceRoot'] = $root;
|
||||
}
|
||||
|
||||
// A list of original sources used by the 'mappings' entry.
|
||||
$sourceMap['sources'] = [];
|
||||
|
||||
foreach ($this->sources as $sourceFilename) {
|
||||
$sourceMap['sources'][] = $this->normalizeFilename($sourceFilename);
|
||||
}
|
||||
|
||||
// A list of symbol names used by the 'mappings' entry.
|
||||
$sourceMap['names'] = [];
|
||||
|
||||
// A string with the encoded mapping data.
|
||||
$sourceMap['mappings'] = $mappings;
|
||||
|
||||
if ($this->options['outputSourceFiles']) {
|
||||
// An optional list of source content, useful when the 'source' can't be hosted.
|
||||
// The contents are listed in the same order as the sources above.
|
||||
// 'null' may be used if some original sources should be retrieved by name.
|
||||
$sourceMap['sourcesContent'] = $this->getSourcesContent();
|
||||
}
|
||||
|
||||
// less.js compat fixes
|
||||
if (\count($sourceMap['sources']) && empty($sourceMap['sourceRoot'])) {
|
||||
unset($sourceMap['sourceRoot']);
|
||||
}
|
||||
|
||||
$jsonSourceMap = json_encode($sourceMap, JSON_UNESCAPED_SLASHES);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
throw new \RuntimeException(json_last_error_msg());
|
||||
}
|
||||
|
||||
assert($jsonSourceMap !== false);
|
||||
|
||||
return $jsonSourceMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the sources contents
|
||||
*
|
||||
* @return string[]|null
|
||||
*/
|
||||
protected function getSourcesContent()
|
||||
{
|
||||
if (empty($this->sources)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$content = [];
|
||||
|
||||
foreach ($this->sources as $sourceFile) {
|
||||
$content[] = file_get_contents($sourceFile);
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the mappings string
|
||||
*
|
||||
* @param string $prefix A prefix added in the output file, which needs to shift mappings
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function generateMappings($prefix = '')
|
||||
{
|
||||
if (! \count($this->mappings)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$prefixLines = substr_count($prefix, "\n");
|
||||
$lastPrefixNewLine = strrpos($prefix, "\n");
|
||||
$lastPrefixLineStart = false === $lastPrefixNewLine ? 0 : $lastPrefixNewLine + 1;
|
||||
$prefixColumn = strlen($prefix) - $lastPrefixLineStart;
|
||||
|
||||
$this->sourceKeys = array_flip(array_keys($this->sources));
|
||||
|
||||
// group mappings by generated line number.
|
||||
$groupedMap = $groupedMapEncoded = [];
|
||||
|
||||
foreach ($this->mappings as $m) {
|
||||
$groupedMap[$m['generated_line']][] = $m;
|
||||
}
|
||||
|
||||
ksort($groupedMap);
|
||||
|
||||
$lastGeneratedLine = $lastOriginalIndex = $lastOriginalLine = $lastOriginalColumn = 0;
|
||||
|
||||
foreach ($groupedMap as $lineNumber => $lineMap) {
|
||||
if ($lineNumber > 1) {
|
||||
// The prefix only impacts the column for the first line of the original output
|
||||
$prefixColumn = 0;
|
||||
}
|
||||
$lineNumber += $prefixLines;
|
||||
|
||||
while (++$lastGeneratedLine < $lineNumber) {
|
||||
$groupedMapEncoded[] = ';';
|
||||
}
|
||||
|
||||
$lineMapEncoded = [];
|
||||
$lastGeneratedColumn = 0;
|
||||
|
||||
foreach ($lineMap as $m) {
|
||||
$generatedColumn = $m['generated_column'] + $prefixColumn;
|
||||
|
||||
$mapEncoded = $this->encoder->encode($generatedColumn - $lastGeneratedColumn);
|
||||
$lastGeneratedColumn = $generatedColumn;
|
||||
|
||||
// find the index
|
||||
if ($m['source_file']) {
|
||||
$index = $this->findFileIndex($m['source_file']);
|
||||
|
||||
if ($index !== false) {
|
||||
$mapEncoded .= $this->encoder->encode($index - $lastOriginalIndex);
|
||||
$lastOriginalIndex = $index;
|
||||
// lines are stored 0-based in SourceMap spec version 3
|
||||
$mapEncoded .= $this->encoder->encode($m['original_line'] - 1 - $lastOriginalLine);
|
||||
$lastOriginalLine = $m['original_line'] - 1;
|
||||
$mapEncoded .= $this->encoder->encode($m['original_column'] - $lastOriginalColumn);
|
||||
$lastOriginalColumn = $m['original_column'];
|
||||
}
|
||||
}
|
||||
|
||||
$lineMapEncoded[] = $mapEncoded;
|
||||
}
|
||||
|
||||
$groupedMapEncoded[] = implode(',', $lineMapEncoded) . ';';
|
||||
}
|
||||
|
||||
return rtrim(implode($groupedMapEncoded), ';');
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the index for the filename
|
||||
*
|
||||
* @param string $filename
|
||||
*
|
||||
* @return int|false
|
||||
*/
|
||||
protected function findFileIndex($filename)
|
||||
{
|
||||
return $this->sourceKeys[$filename];
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize filename
|
||||
*
|
||||
* @param string $filename
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function normalizeFilename($filename)
|
||||
{
|
||||
$filename = $this->fixWindowsPath($filename);
|
||||
$rootpath = $this->options['sourceMapRootpath'];
|
||||
$basePath = $this->options['sourceMapBasepath'];
|
||||
|
||||
// "Trim" the 'sourceMapBasepath' from the output filename.
|
||||
if (\strlen($basePath) && strpos($filename, $basePath) === 0) {
|
||||
$filename = substr($filename, \strlen($basePath));
|
||||
}
|
||||
|
||||
// Remove extra leading path separators.
|
||||
if (strpos($filename, '\\') === 0 || strpos($filename, '/') === 0) {
|
||||
$filename = substr($filename, 1);
|
||||
}
|
||||
|
||||
return $rootpath . $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix windows paths
|
||||
*
|
||||
* @param string $path
|
||||
* @param bool $addEndSlash
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function fixWindowsPath($path, $addEndSlash = false)
|
||||
{
|
||||
$slash = ($addEndSlash) ? '/' : '';
|
||||
|
||||
if (! empty($path)) {
|
||||
$path = str_replace('\\', '/', $path);
|
||||
$path = rtrim($path, '/') . $slash;
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
/**
|
||||
* Block/node types
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*/
|
||||
class Type
|
||||
{
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_ASSIGN = 'assign';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_AT_ROOT = 'at-root';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_BLOCK = 'block';
|
||||
/**
|
||||
* @deprecated
|
||||
* @internal
|
||||
*/
|
||||
const T_BREAK = 'break';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_CHARSET = 'charset';
|
||||
const T_COLOR = 'color';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_COMMENT = 'comment';
|
||||
/**
|
||||
* @deprecated
|
||||
* @internal
|
||||
*/
|
||||
const T_CONTINUE = 'continue';
|
||||
/**
|
||||
* @deprecated
|
||||
* @internal
|
||||
*/
|
||||
const T_CONTROL = 'control';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_CUSTOM_PROPERTY = 'custom';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_DEBUG = 'debug';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_DIRECTIVE = 'directive';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_EACH = 'each';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_ELSE = 'else';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_ELSEIF = 'elseif';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_ERROR = 'error';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_EXPRESSION = 'exp';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_EXTEND = 'extend';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_FOR = 'for';
|
||||
const T_FUNCTION = 'function';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_FUNCTION_REFERENCE = 'function-reference';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_FUNCTION_CALL = 'fncall';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_HSL = 'hsl';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_HWB = 'hwb';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_IF = 'if';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_IMPORT = 'import';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_INCLUDE = 'include';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_INTERPOLATE = 'interpolate';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_INTERPOLATED = 'interpolated';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_KEYWORD = 'keyword';
|
||||
const T_LIST = 'list';
|
||||
const T_MAP = 'map';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_MEDIA = 'media';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_MEDIA_EXPRESSION = 'mediaExp';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_MEDIA_TYPE = 'mediaType';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_MEDIA_VALUE = 'mediaValue';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_MIXIN = 'mixin';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_MIXIN_CONTENT = 'mixin_content';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_NESTED_PROPERTY = 'nestedprop';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_NOT = 'not';
|
||||
const T_NULL = 'null';
|
||||
const T_NUMBER = 'number';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_RETURN = 'return';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_ROOT = 'root';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_SCSSPHP_IMPORT_ONCE = 'scssphp-import-once';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_SELF = 'self';
|
||||
const T_STRING = 'string';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_UNARY = 'unary';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_VARIABLE = 'var';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_WARN = 'warn';
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
const T_WHILE = 'while';
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
use ScssPhp\ScssPhp\Base\Range;
|
||||
use ScssPhp\ScssPhp\Exception\RangeException;
|
||||
use ScssPhp\ScssPhp\Node\Number;
|
||||
|
||||
/**
|
||||
* Utility functions
|
||||
*
|
||||
* @author Anthon Pang <anthon.pang@gmail.com>
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Util
|
||||
{
|
||||
/**
|
||||
* Asserts that `value` falls within `range` (inclusive), leaving
|
||||
* room for slight floating-point errors.
|
||||
*
|
||||
* @param string $name The name of the value. Used in the error message.
|
||||
* @param Range $range Range of values.
|
||||
* @param array|Number $value The value to check.
|
||||
* @param string $unit The unit of the value. Used in error reporting.
|
||||
*
|
||||
* @return mixed `value` adjusted to fall within range, if it was outside by a floating-point margin.
|
||||
*
|
||||
* @throws \ScssPhp\ScssPhp\Exception\RangeException
|
||||
*/
|
||||
public static function checkRange($name, Range $range, $value, $unit = '')
|
||||
{
|
||||
$val = $value[1];
|
||||
$grace = new Range(-0.00001, 0.00001);
|
||||
|
||||
if (! \is_numeric($val)) {
|
||||
throw new RangeException("$name {$val} is not a number.");
|
||||
}
|
||||
|
||||
if ($range->includes($val)) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
if ($grace->includes($val - $range->first)) {
|
||||
return $range->first;
|
||||
}
|
||||
|
||||
if ($grace->includes($val - $range->last)) {
|
||||
return $range->last;
|
||||
}
|
||||
|
||||
throw new RangeException("$name {$val} must be between {$range->first} and {$range->last}$unit");
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode URI component
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function encodeURIComponent($string)
|
||||
{
|
||||
$revert = ['%21' => '!', '%2A' => '*', '%27' => "'", '%28' => '(', '%29' => ')'];
|
||||
|
||||
return strtr(rawurlencode($string), $revert);
|
||||
}
|
||||
|
||||
/**
|
||||
* mb_chr() wrapper
|
||||
*
|
||||
* @param int $code
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function mbChr($code)
|
||||
{
|
||||
// Use the native implementation if available, but not on PHP 7.2 as mb_chr(0) is buggy there
|
||||
if (\PHP_VERSION_ID > 70300 && \function_exists('mb_chr')) {
|
||||
return mb_chr($code, 'UTF-8');
|
||||
}
|
||||
|
||||
if (0x80 > $code %= 0x200000) {
|
||||
$s = \chr($code);
|
||||
} elseif (0x800 > $code) {
|
||||
$s = \chr(0xC0 | $code >> 6) . \chr(0x80 | $code & 0x3F);
|
||||
} elseif (0x10000 > $code) {
|
||||
$s = \chr(0xE0 | $code >> 12) . \chr(0x80 | $code >> 6 & 0x3F) . \chr(0x80 | $code & 0x3F);
|
||||
} else {
|
||||
$s = \chr(0xF0 | $code >> 18) . \chr(0x80 | $code >> 12 & 0x3F)
|
||||
. \chr(0x80 | $code >> 6 & 0x3F) . \chr(0x80 | $code & 0x3F);
|
||||
}
|
||||
|
||||
return $s;
|
||||
}
|
||||
|
||||
/**
|
||||
* mb_strlen() wrapper
|
||||
*
|
||||
* @param string $string
|
||||
* @return int
|
||||
*/
|
||||
public static function mbStrlen($string)
|
||||
{
|
||||
// Use the native implementation if available.
|
||||
if (\function_exists('mb_strlen')) {
|
||||
return mb_strlen($string, 'UTF-8');
|
||||
}
|
||||
|
||||
if (\function_exists('iconv_strlen')) {
|
||||
return (int) @iconv_strlen($string, 'UTF-8');
|
||||
}
|
||||
|
||||
throw new \LogicException('Either mbstring (recommended) or iconv is necessary to use Scssphp.');
|
||||
}
|
||||
|
||||
/**
|
||||
* mb_substr() wrapper
|
||||
* @param string $string
|
||||
* @param int $start
|
||||
* @param null|int $length
|
||||
* @return string
|
||||
*/
|
||||
public static function mbSubstr($string, $start, $length = null)
|
||||
{
|
||||
// Use the native implementation if available.
|
||||
if (\function_exists('mb_substr')) {
|
||||
return mb_substr($string, $start, $length, 'UTF-8');
|
||||
}
|
||||
|
||||
if (\function_exists('iconv_substr')) {
|
||||
if ($start < 0) {
|
||||
$start = static::mbStrlen($string) + $start;
|
||||
if ($start < 0) {
|
||||
$start = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (null === $length) {
|
||||
$length = 2147483647;
|
||||
} elseif ($length < 0) {
|
||||
$length = static::mbStrlen($string) + $length - $start;
|
||||
if ($length < 0) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
return (string)iconv_substr($string, $start, $length, 'UTF-8');
|
||||
}
|
||||
|
||||
throw new \LogicException('Either mbstring (recommended) or iconv is necessary to use Scssphp.');
|
||||
}
|
||||
|
||||
/**
|
||||
* mb_strpos wrapper
|
||||
* @param string $haystack
|
||||
* @param string $needle
|
||||
* @param int $offset
|
||||
*
|
||||
* @return int|false
|
||||
*/
|
||||
public static function mbStrpos($haystack, $needle, $offset = 0)
|
||||
{
|
||||
if (\function_exists('mb_strpos')) {
|
||||
return mb_strpos($haystack, $needle, $offset, 'UTF-8');
|
||||
}
|
||||
|
||||
if (\function_exists('iconv_strpos')) {
|
||||
return iconv_strpos($haystack, $needle, $offset, 'UTF-8');
|
||||
}
|
||||
|
||||
throw new \LogicException('Either mbstring (recommended) or iconv is necessary to use Scssphp.');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace ScssPhp\ScssPhp\Util;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class Path
|
||||
{
|
||||
/**
|
||||
* @param string $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function isAbsolute($path)
|
||||
{
|
||||
if ($path === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($path[0] === '/') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (\DIRECTORY_SEPARATOR !== '\\') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($path[0] === '\\') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (\strlen($path) < 3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($path[1] !== ':') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($path[2] !== '/' && $path[2] !== '\\') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!preg_match('/^[A-Za-z]$/', $path[0])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $part1
|
||||
* @param string $part2
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function join($part1, $part2)
|
||||
{
|
||||
if ($part1 === '' || self::isAbsolute($part2)) {
|
||||
return $part2;
|
||||
}
|
||||
|
||||
if ($part2 === '') {
|
||||
return $part1;
|
||||
}
|
||||
|
||||
$last = $part1[\strlen($part1) - 1];
|
||||
$separator = \DIRECTORY_SEPARATOR;
|
||||
|
||||
if ($last === '/' || $last === \DIRECTORY_SEPARATOR) {
|
||||
$separator = '';
|
||||
}
|
||||
|
||||
return $part1 . $separator . $part2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
use ScssPhp\ScssPhp\Node\Number;
|
||||
|
||||
final class ValueConverter
|
||||
{
|
||||
// Prevent instantiating it
|
||||
private function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a value from a Scss source string.
|
||||
*
|
||||
* The returned value is guaranteed to be supported by the
|
||||
* Compiler methods for registering custom variables. No other
|
||||
* guarantee about it is provided. It should be considered
|
||||
* opaque values by the caller.
|
||||
*
|
||||
* @param string $source
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function parseValue($source)
|
||||
{
|
||||
$parser = new Parser(__CLASS__);
|
||||
|
||||
if (!$parser->parseValue($source, $value)) {
|
||||
throw new \InvalidArgumentException(sprintf('Invalid value source "%s".', $source));
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a PHP value to a Sass value
|
||||
*
|
||||
* The returned value is guaranteed to be supported by the
|
||||
* Compiler methods for registering custom variables. No other
|
||||
* guarantee about it is provided. It should be considered
|
||||
* opaque values by the caller.
|
||||
*
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function fromPhp($value)
|
||||
{
|
||||
if ($value instanceof Number) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
if (is_array($value) && isset($value[0]) && \in_array($value[0], [Type::T_NULL, Type::T_COLOR, Type::T_KEYWORD, Type::T_LIST, Type::T_MAP, Type::T_STRING])) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
if ($value === null) {
|
||||
return Compiler::$null;
|
||||
}
|
||||
|
||||
if ($value === true) {
|
||||
return Compiler::$true;
|
||||
}
|
||||
|
||||
if ($value === false) {
|
||||
return Compiler::$false;
|
||||
}
|
||||
|
||||
if ($value === '') {
|
||||
return Compiler::$emptyString;
|
||||
}
|
||||
|
||||
if (\is_int($value) || \is_float($value)) {
|
||||
return new Number($value, '');
|
||||
}
|
||||
|
||||
if (\is_string($value)) {
|
||||
return [Type::T_STRING, '"', [$value]];
|
||||
}
|
||||
|
||||
throw new \InvalidArgumentException(sprintf('Cannot convert the value of type "%s" to a Sass value.', gettype($value)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SCSSPHP
|
||||
*
|
||||
* @copyright 2012-2020 Leaf Corcoran
|
||||
*
|
||||
* @license http://opensource.org/licenses/MIT MIT
|
||||
*
|
||||
* @link http://scssphp.github.io/scssphp
|
||||
*/
|
||||
|
||||
namespace ScssPhp\ScssPhp;
|
||||
|
||||
/**
|
||||
* SCSSPHP version
|
||||
*
|
||||
* @author Leaf Corcoran <leafot@gmail.com>
|
||||
*/
|
||||
class Version
|
||||
{
|
||||
const VERSION = '1.12.0';
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user