aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/tests/json/json_manipulator_test.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/tests/json/json_manipulator_test.rs')
-rw-r--r--crates/shirabe/tests/json/json_manipulator_test.rs5514
1 files changed, 5399 insertions, 115 deletions
diff --git a/crates/shirabe/tests/json/json_manipulator_test.rs b/crates/shirabe/tests/json/json_manipulator_test.rs
index 7cf8e87..96b74f7 100644
--- a/crates/shirabe/tests/json/json_manipulator_test.rs
+++ b/crates/shirabe/tests/json/json_manipulator_test.rs
@@ -1,301 +1,5585 @@
//! ref: composer/tests/Composer/Test/Json/JsonManipulatorTest.php
+use indexmap::IndexMap;
+use shirabe::json::{JsonFile, JsonManipulator};
+use shirabe_php_shim::PhpMixed;
+
+fn s(v: &str) -> PhpMixed {
+ PhpMixed::String(v.to_string())
+}
+
+fn arr(pairs: &[(&str, PhpMixed)]) -> PhpMixed {
+ let mut m: IndexMap<String, PhpMixed> = IndexMap::new();
+ for (k, v) in pairs {
+ m.insert(k.to_string(), v.clone());
+ }
+ PhpMixed::Array(m)
+}
+
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_link() {
- todo!()
+ let cases: Vec<(&str, &str, &str, &str, &str)> = vec![
+ (
+ r#"{}"#,
+ r#"require"#,
+ r#"vendor/baz"#,
+ r#"qux"#,
+ r#"{
+ "require": {
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "foo": "bar"
+}"#,
+ r#"require"#,
+ r#"vendor/baz"#,
+ r#"qux"#,
+ r#"{
+ "foo": "bar",
+ "require": {
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require": {
+ }
+}"#,
+ r#"require"#,
+ r#"vendor/baz"#,
+ r#"qux"#,
+ r#"{
+ "require": {
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "empty": "",
+ "require": {
+ "foo": "bar"
+ }
+}"#,
+ r#"require"#,
+ r#"vendor/baz"#,
+ r#"qux"#,
+ r#"{
+ "empty": "",
+ "require": {
+ "foo": "bar",
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor/baz": "baz"
+ }
+}"#,
+ r#"require"#,
+ r#"vendor/baz"#,
+ r#"qux"#,
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor/baz": "baz"
+ }
+}"#,
+ r#"require"#,
+ r#"vEnDoR/bAz"#,
+ r#"qux"#,
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor\/baz": "baz"
+ }
+}"#,
+ r#"require"#,
+ r#"vendor/baz"#,
+ r#"qux"#,
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor\/baz": "baz"
+ }
+}"#,
+ r#"require"#,
+ r#"vEnDoR/bAz"#,
+ r#"qux"#,
+ r#"{
+ "require":
+ {
+ "foo": "bar",
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require": {
+ "foo": "bar"
+ },
+ "repositories": [{
+ "type": "package",
+ "package": {
+ "require": {
+ "foo": "bar"
+ }
+ }
+ }]
+}"#,
+ r#"require"#,
+ r#"foo"#,
+ r#"qux"#,
+ r#"{
+ "require": {
+ "foo": "qux"
+ },
+ "repositories": [{
+ "type": "package",
+ "package": {
+ "require": {
+ "foo": "bar"
+ }
+ }
+ }]
+}
+"#,
+ ),
+ (
+ r#"{
+ "repositories": [{
+ "type": "package",
+ "package": {
+ "require": {
+ "foo": "bar"
+ }
+ }
+ }]
+}"#,
+ r#"require"#,
+ r#"foo"#,
+ r#"qux"#,
+ r#"{
+ "repositories": [{
+ "type": "package",
+ "package": {
+ "require": {
+ "foo": "bar"
+ }
+ }
+ }],
+ "require": {
+ "foo": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require": {
+ "php": "5.*"
+ }
+}"#,
+ r#"require-dev"#,
+ r#"foo"#,
+ r#"qux"#,
+ r#"{
+ "require": {
+ "php": "5.*"
+ },
+ "require-dev": {
+ "foo": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require": {
+ "php": "5.*"
+ },
+ "require-dev": {
+ "foo": "bar"
+ }
+}"#,
+ r#"require-dev"#,
+ r#"foo"#,
+ r#"qux"#,
+ r#"{
+ "require": {
+ "php": "5.*"
+ },
+ "require-dev": {
+ "foo": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "repositories": [{
+ "type": "package",
+ "package": {
+ "bar": "ba[z",
+ "dist": {
+ "url": "http...",
+ "type": "zip"
+ },
+ "autoload": {
+ "classmap": [ "foo/bar" ]
+ }
+ }
+ }],
+ "require": {
+ "php": "5.*"
+ },
+ "require-dev": {
+ "foo": "bar"
+ }
+}"#,
+ r#"require-dev"#,
+ r#"foo"#,
+ r#"qux"#,
+ r#"{
+ "repositories": [{
+ "type": "package",
+ "package": {
+ "bar": "ba[z",
+ "dist": {
+ "url": "http...",
+ "type": "zip"
+ },
+ "autoload": {
+ "classmap": [ "foo/bar" ]
+ }
+ }
+ }],
+ "require": {
+ "php": "5.*"
+ },
+ "require-dev": {
+ "foo": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "config": {
+ "cache-files-ttl": 0,
+ "discard-changes": true
+ },
+ "minimum-stability": "stable",
+ "prefer-stable": false,
+ "provide": {
+ "heroku-sys/cedar": "14.2016.03.22"
+ },
+ "repositories": [
+ {
+ "packagist.org": false
+ },
+ {
+ "type": "package",
+ "package": [
+ {
+ "type": "metapackage",
+ "name": "anthonymartin/geo-location",
+ "version": "v1.0.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "aws/aws-sdk-php",
+ "version": "3.9.4",
+ "require": {
+ "heroku-sys/php": ">=5.5"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "cloudinary/cloudinary_php",
+ "version": "dev-master",
+ "require": {
+ "heroku-sys/ext-curl": "*",
+ "heroku-sys/ext-json": "*",
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/annotations",
+ "version": "v1.2.7",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/cache",
+ "version": "v1.6.0",
+ "require": {
+ "heroku-sys/php": "~5.5|~7.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/collections",
+ "version": "v1.3.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/common",
+ "version": "v2.6.1",
+ "require": {
+ "heroku-sys/php": "~5.5|~7.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/inflector",
+ "version": "v1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "geoip/geoip",
+ "version": "v1.16",
+ "require": [],
+ "replace": [],
+ "provide": [],
+ "conflict": {
+ "heroku-sys/ext-geoip": "*"
+ }
+ },
+ {
+ "type": "metapackage",
+ "name": "giggsey/libphonenumber-for-php",
+ "version": "7.2.5",
+ "require": {
+ "heroku-sys/ext-mbstring": "*"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/guzzle",
+ "version": "5.3.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/promises",
+ "version": "1.0.3",
+ "require": {
+ "heroku-sys/php": ">=5.5.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/psr7",
+ "version": "1.2.3",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/ringphp",
+ "version": "1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/streams",
+ "version": "3.0.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "hipchat/hipchat-php",
+ "version": "v1.4",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "kriswallsmith/buzz",
+ "version": "v0.15",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "league/csv",
+ "version": "8.0.0",
+ "require": {
+ "heroku-sys/ext-mbstring": "*",
+ "heroku-sys/php": ">=5.5.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "league/fractal",
+ "version": "0.13.0",
+ "require": {
+ "heroku-sys/php": ">=5.4"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "mashape/unirest-php",
+ "version": "1.2.1",
+ "require": {
+ "heroku-sys/ext-curl": "*",
+ "heroku-sys/ext-json": "*",
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "mtdowling/jmespath.php",
+ "version": "2.3.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "palex/phpstructureddata",
+ "version": "v2.0.1",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "psr/http-message",
+ "version": "1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "react/promise",
+ "version": "v2.2.1",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "rollbar/rollbar",
+ "version": "v0.15.0",
+ "require": {
+ "heroku-sys/ext-curl": "*"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "ronanguilloux/isocodes",
+ "version": "1.2.0",
+ "require": {
+ "heroku-sys/ext-bcmath": "*",
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "sendgrid/sendgrid",
+ "version": "2.1.1",
+ "require": {
+ "heroku-sys/php": ">=5.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "sendgrid/smtpapi",
+ "version": "0.0.1",
+ "require": {
+ "heroku-sys/php": ">=5.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/css-selector",
+ "version": "v2.8.2",
+ "require": {
+ "heroku-sys/php": ">=5.3.9"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/http-foundation",
+ "version": "v2.8.2",
+ "require": {
+ "heroku-sys/php": ">=5.3.9"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/polyfill-php54",
+ "version": "v1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/polyfill-php55",
+ "version": "v1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "thepixeldeveloper/sitemap",
+ "version": "3.0.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "tijsverkoyen/css-to-inline-styles",
+ "version": "1.5.5",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "yiisoft/yii",
+ "version": "1.1.17",
+ "require": {
+ "heroku-sys/php": ">=5.1.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "composer.json/composer.lock",
+ "version": "dev-597511d6d51b96e4a8afeba2c79982e5",
+ "require": {
+ "heroku-sys/php": "~5.6.0",
+ "heroku-sys/ext-newrelic": "*",
+ "heroku-sys/ext-gd": "*",
+ "heroku-sys/ext-redis": "*"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ }
+ ]
+ }
+ ],
+ "require": {
+ "composer.json/composer.lock": "dev-597511d6d51b96e4a8afeba2c79982e5",
+ "anthonymartin/geo-location": "v1.0.0",
+ "aws/aws-sdk-php": "3.9.4",
+ "cloudinary/cloudinary_php": "dev-master",
+ "doctrine/annotations": "v1.2.7",
+ "doctrine/cache": "v1.6.0",
+ "doctrine/collections": "v1.3.0",
+ "doctrine/common": "v2.6.1",
+ "doctrine/inflector": "v1.1.0",
+ "doctrine/lexer": "v1.0.1",
+ "geoip/geoip": "v1.16",
+ "giggsey/libphonenumber-for-php": "7.2.5",
+ "guzzlehttp/guzzle": "5.3.0",
+ "guzzlehttp/promises": "1.0.3",
+ "guzzlehttp/psr7": "1.2.3",
+ "guzzlehttp/ringphp": "1.1.0",
+ "guzzlehttp/streams": "3.0.0",
+ "hipchat/hipchat-php": "v1.4",
+ "kriswallsmith/buzz": "v0.15",
+ "league/csv": "8.0.0",
+ "league/fractal": "0.13.0",
+ "mashape/unirest-php": "1.2.1",
+ "mtdowling/jmespath.php": "2.3.0",
+ "palex/phpstructureddata": "v2.0.1",
+ "psr/http-message": "1.0",
+ "react/promise": "v2.2.1",
+ "rollbar/rollbar": "v0.15.0",
+ "ronanguilloux/isocodes": "1.2.0",
+ "sendgrid/sendgrid": "2.1.1",
+ "sendgrid/smtpapi": "0.0.1",
+ "symfony/css-selector": "v2.8.2",
+ "symfony/http-foundation": "v2.8.2",
+ "symfony/polyfill-php54": "v1.1.0",
+ "symfony/polyfill-php55": "v1.1.0",
+ "thepixeldeveloper/sitemap": "3.0.0",
+ "tijsverkoyen/css-to-inline-styles": "1.5.5",
+ "yiisoft/yii": "1.1.17",
+ "heroku-sys/apache": "^2.4.10",
+ "heroku-sys/nginx": "~1.8.0"
+ }
+}"#,
+ r#"require"#,
+ r#"foo"#,
+ r#"qux"#,
+ r#"{
+ "config": {
+ "cache-files-ttl": 0,
+ "discard-changes": true
+ },
+ "minimum-stability": "stable",
+ "prefer-stable": false,
+ "provide": {
+ "heroku-sys/cedar": "14.2016.03.22"
+ },
+ "repositories": [
+ {
+ "packagist.org": false
+ },
+ {
+ "type": "package",
+ "package": [
+ {
+ "type": "metapackage",
+ "name": "anthonymartin/geo-location",
+ "version": "v1.0.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "aws/aws-sdk-php",
+ "version": "3.9.4",
+ "require": {
+ "heroku-sys/php": ">=5.5"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "cloudinary/cloudinary_php",
+ "version": "dev-master",
+ "require": {
+ "heroku-sys/ext-curl": "*",
+ "heroku-sys/ext-json": "*",
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/annotations",
+ "version": "v1.2.7",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/cache",
+ "version": "v1.6.0",
+ "require": {
+ "heroku-sys/php": "~5.5|~7.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/collections",
+ "version": "v1.3.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/common",
+ "version": "v2.6.1",
+ "require": {
+ "heroku-sys/php": "~5.5|~7.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/inflector",
+ "version": "v1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "require": {
+ "heroku-sys/php": ">=5.3.2"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "geoip/geoip",
+ "version": "v1.16",
+ "require": [],
+ "replace": [],
+ "provide": [],
+ "conflict": {
+ "heroku-sys/ext-geoip": "*"
+ }
+ },
+ {
+ "type": "metapackage",
+ "name": "giggsey/libphonenumber-for-php",
+ "version": "7.2.5",
+ "require": {
+ "heroku-sys/ext-mbstring": "*"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/guzzle",
+ "version": "5.3.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/promises",
+ "version": "1.0.3",
+ "require": {
+ "heroku-sys/php": ">=5.5.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/psr7",
+ "version": "1.2.3",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/ringphp",
+ "version": "1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "guzzlehttp/streams",
+ "version": "3.0.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "hipchat/hipchat-php",
+ "version": "v1.4",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "kriswallsmith/buzz",
+ "version": "v0.15",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "league/csv",
+ "version": "8.0.0",
+ "require": {
+ "heroku-sys/ext-mbstring": "*",
+ "heroku-sys/php": ">=5.5.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "league/fractal",
+ "version": "0.13.0",
+ "require": {
+ "heroku-sys/php": ">=5.4"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "mashape/unirest-php",
+ "version": "1.2.1",
+ "require": {
+ "heroku-sys/ext-curl": "*",
+ "heroku-sys/ext-json": "*",
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "mtdowling/jmespath.php",
+ "version": "2.3.0",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "palex/phpstructureddata",
+ "version": "v2.0.1",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "psr/http-message",
+ "version": "1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "react/promise",
+ "version": "v2.2.1",
+ "require": {
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "rollbar/rollbar",
+ "version": "v0.15.0",
+ "require": {
+ "heroku-sys/ext-curl": "*"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "ronanguilloux/isocodes",
+ "version": "1.2.0",
+ "require": {
+ "heroku-sys/ext-bcmath": "*",
+ "heroku-sys/php": ">=5.4.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "sendgrid/sendgrid",
+ "version": "2.1.1",
+ "require": {
+ "heroku-sys/php": ">=5.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "sendgrid/smtpapi",
+ "version": "0.0.1",
+ "require": {
+ "heroku-sys/php": ">=5.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/css-selector",
+ "version": "v2.8.2",
+ "require": {
+ "heroku-sys/php": ">=5.3.9"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/http-foundation",
+ "version": "v2.8.2",
+ "require": {
+ "heroku-sys/php": ">=5.3.9"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/polyfill-php54",
+ "version": "v1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "symfony/polyfill-php55",
+ "version": "v1.1.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.3"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "thepixeldeveloper/sitemap",
+ "version": "3.0.0",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "tijsverkoyen/css-to-inline-styles",
+ "version": "1.5.5",
+ "require": {
+ "heroku-sys/php": ">=5.3.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "yiisoft/yii",
+ "version": "1.1.17",
+ "require": {
+ "heroku-sys/php": ">=5.1.0"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ },
+ {
+ "type": "metapackage",
+ "name": "composer.json/composer.lock",
+ "version": "dev-597511d6d51b96e4a8afeba2c79982e5",
+ "require": {
+ "heroku-sys/php": "~5.6.0",
+ "heroku-sys/ext-newrelic": "*",
+ "heroku-sys/ext-gd": "*",
+ "heroku-sys/ext-redis": "*"
+ },
+ "replace": [],
+ "provide": [],
+ "conflict": []
+ }
+ ]
+ }
+ ],
+ "require": {
+ "composer.json/composer.lock": "dev-597511d6d51b96e4a8afeba2c79982e5",
+ "anthonymartin/geo-location": "v1.0.0",
+ "aws/aws-sdk-php": "3.9.4",
+ "cloudinary/cloudinary_php": "dev-master",
+ "doctrine/annotations": "v1.2.7",
+ "doctrine/cache": "v1.6.0",
+ "doctrine/collections": "v1.3.0",
+ "doctrine/common": "v2.6.1",
+ "doctrine/inflector": "v1.1.0",
+ "doctrine/lexer": "v1.0.1",
+ "geoip/geoip": "v1.16",
+ "giggsey/libphonenumber-for-php": "7.2.5",
+ "guzzlehttp/guzzle": "5.3.0",
+ "guzzlehttp/promises": "1.0.3",
+ "guzzlehttp/psr7": "1.2.3",
+ "guzzlehttp/ringphp": "1.1.0",
+ "guzzlehttp/streams": "3.0.0",
+ "hipchat/hipchat-php": "v1.4",
+ "kriswallsmith/buzz": "v0.15",
+ "league/csv": "8.0.0",
+ "league/fractal": "0.13.0",
+ "mashape/unirest-php": "1.2.1",
+ "mtdowling/jmespath.php": "2.3.0",
+ "palex/phpstructureddata": "v2.0.1",
+ "psr/http-message": "1.0",
+ "react/promise": "v2.2.1",
+ "rollbar/rollbar": "v0.15.0",
+ "ronanguilloux/isocodes": "1.2.0",
+ "sendgrid/sendgrid": "2.1.1",
+ "sendgrid/smtpapi": "0.0.1",
+ "symfony/css-selector": "v2.8.2",
+ "symfony/http-foundation": "v2.8.2",
+ "symfony/polyfill-php54": "v1.1.0",
+ "symfony/polyfill-php55": "v1.1.0",
+ "thepixeldeveloper/sitemap": "3.0.0",
+ "tijsverkoyen/css-to-inline-styles": "1.5.5",
+ "yiisoft/yii": "1.1.17",
+ "heroku-sys/apache": "^2.4.10",
+ "heroku-sys/nginx": "~1.8.0",
+ "foo": "qux"
+ }
+}
+"#,
+ ),
+ ];
+ for (json, r#type, package, constraint, expected) in cases {
+ let mut manipulator = JsonManipulator::new(json.to_string()).unwrap();
+ assert!(
+ manipulator
+ .add_link(r#type, package, constraint, false)
+ .unwrap()
+ );
+ assert_eq!(expected, manipulator.get_contents());
+ }
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_link_and_sort_packages() {
- todo!()
+ let cases: Vec<(&str, &str, &str, &str, bool, &str)> = vec![
+ (
+ r#"{
+ "require": {
+ "vendor/baz": "qux"
+ }
+}"#,
+ r#"require"#,
+ r#"foo"#,
+ r#"bar"#,
+ true,
+ r#"{
+ "require": {
+ "foo": "bar",
+ "vendor/baz": "qux"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require": {
+ "vendor/baz": "qux"
+ }
+}"#,
+ r#"require"#,
+ r#"foo"#,
+ r#"bar"#,
+ false,
+ r#"{
+ "require": {
+ "vendor/baz": "qux",
+ "foo": "bar"
+ }
+}
+"#,
+ ),
+ (
+ r#"{
+ "require": {
+ "foo": "baz",
+ "ext-10gd": "*",
+ "ext-2mcrypt": "*",
+ "lib-foo": "*",
+ "hhvm": "*",
+ "php": ">=5.5"
+ }
+}"#,
+ r#"require"#,
+ r#"igorw/retry"#,
+ r#"*"#,
+ true,
+ r#"{
+ "require": {
+ "php": ">=5.5",
+ "hhvm": "*",
+ "ext-2mcrypt": "*",
+ "ext-10gd": "*",
+ "lib-foo": "*",
+ "foo": "baz",
+ "igorw/retry": "*"
+ }
+}
+"#,
+ ),
+ ];
+ for (json, r#type, package, constraint, sort_packages, expected) in cases {
+ let mut manipulator = JsonManipulator::new(json.to_string()).unwrap();
+ assert!(
+ manipulator
+ .add_link(r#type, package, constraint, sort_packages)
+ .unwrap()
+ );
+ assert_eq!(expected, manipulator.get_contents());
+ }
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_sub_node() {
- todo!()
+ let cases: Vec<(&str, &str, bool, Option<&str>)> = vec![
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "foo": "bar",
+ "bar": "baz"
+ },
+ "bar": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"foo"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "bar": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "foo": "bar",
+ "bar": "baz"
+ },
+ "bar": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"bar"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "foo": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"foo"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo\/bar": {
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"foo/bar"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "foo": "bar",
+ "bar": "baz"
+ },
+ "bar": {
+ "foo": "bar",
+ "bar": "baz"
+ },
+ "baz": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"bar"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "foo": {
+ "foo": "bar",
+ "bar": "baz"
+ },
+ "baz": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "main": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"removenotthere"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "main": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "baz": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"bar"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "baz": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "baz": "qux"
+ },
+ "baz": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+ }
+}"#,
+ r#"baz"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "foo": {
+ "baz": "qux"
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ }
+}"#,
+ r#"bar"#,
+ true,
+ None,
+ ),
+ (
+ r#"{
+ "repositories": {}
+}"#,
+ r#"bar"#,
+ true,
+ None,
+ ),
+ (
+ r#"{
+}"#, r#"bar"#, true, None,
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "package": { "bar": "baz" }
+ }
+ }
+}"#,
+ r#"foo"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "package": { "bar": "ba{z" }
+ }
+ }
+}"#,
+ r#"bar"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "foo": {
+ "package": { "bar": "ba{z" }
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": {
+ "foo": {
+ "package": { "bar": "ba}z" }
+ }
+ }
+}"#,
+ r#"bar"#,
+ true,
+ Some(
+ r#"{
+ "repositories": {
+ "foo": {
+ "package": { "bar": "ba}z" }
+ }
+ }
+}
+"#,
+ ),
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "package": { "bar": "ba[z" }
+ }
+ ]
+}"#,
+ r#"bar"#,
+ false,
+ None,
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "package": { "bar": "ba]z" }
+ }
+ ]
+}"#,
+ r#"bar"#,
+ false,
+ None,
+ ),
+ ];
+ for (json, name, expected, expected_content) in cases {
+ let mut manipulator = JsonManipulator::new(json.to_string()).unwrap();
+ assert_eq!(
+ expected,
+ manipulator.remove_sub_node("repositories", name).unwrap()
+ );
+ if let Some(expected_content) = expected_content {
+ assert_eq!(expected_content, manipulator.get_contents());
+ }
+ }
+}
+
+#[test]
+#[ignore]
+fn test_add_repository() {
+ let cases: Vec<(&str, &str, &str, PhpMixed, bool)> = vec![
+ (
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ }
+ ]
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "type": "path",
+ "url": "foo/bar"
+ },
+ {
+ "type": "git",
+ "url": "example.tld"
+ }
+ ]
+}
+"#,
+ r#""#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ false,
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ }
+ ]
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ },
+ {
+ "type": "path",
+ "url": "foo/bar"
+ }
+ ]
+}
+"#,
+ r#""#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ true,
+ ),
+ (
+ r#"{
+ "repositories": {
+ "0": {
+ "type": "git",
+ "url": "example.tld"
+ },
+ "packagist.org": false
+ }
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "name": "foo",
+ "type": "path",
+ "url": "foo/bar"
+ },
+ {
+ "type": "git",
+ "url": "example.tld"
+ },
+ {
+ "packagist.org": false
+ }
+ ]
+}
+"#,
+ r#"foo"#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ false,
+ ),
+ (
+ r#"{
+ "repositories": {
+ "0": {
+ "type": "git",
+ "url": "example.tld"
+ },
+ "packagist.org": false
+ }
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ },
+ {
+ "packagist.org": false
+ },
+ {
+ "name": "foo",
+ "type": "path",
+ "url": "foo/bar"
+ }
+ ]
+}
+"#,
+ r#"foo"#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ true,
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ }
+ ]
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "name": "foo",
+ "type": "path",
+ "url": "foo/bar"
+ },
+ {
+ "type": "git",
+ "url": "example.tld"
+ }
+ ]
+}
+"#,
+ r#"foo"#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ false,
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ }
+ ]
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ },
+ {
+ "name": "foo",
+ "type": "path",
+ "url": "foo/bar"
+ }
+ ]
+}
+"#,
+ r#"foo"#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ true,
+ ),
+ (
+ r#"{
+ "repositories": {
+ "0": {
+ "type": "git",
+ "url": "example.tld"
+ },
+ "packagist.org": false
+ }
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "type": "path",
+ "url": "foo/bar"
+ },
+ {
+ "type": "git",
+ "url": "example.tld"
+ },
+ {
+ "packagist.org": false
+ }
+ ]
+}
+"#,
+ r#""#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ false,
+ ),
+ (
+ r#"{
+ "repositories": {
+ "0": {
+ "type": "git",
+ "url": "example.tld"
+ },
+ "packagist.org": false
+ }
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "type": "git",
+ "url": "example.tld"
+ },
+ {
+ "packagist.org": false
+ },
+ {
+ "type": "path",
+ "url": "foo/bar"
+ }
+ ]
+}
+"#,
+ r#""#,
+ arr(&[(r#"type"#, s(r#"path"#)), (r#"url"#, s(r#"foo/bar"#))]),
+ true,
+ ),
+ ];
+ for (from, to, name, config, append) in cases {
+ let mut manipulator = JsonManipulator::new(from.to_string()).unwrap();
+ assert!(manipulator.add_repository(name, config, append).unwrap());
+ assert_eq!(to, manipulator.get_contents());
+ }
+}
+
+#[test]
+#[ignore]
+fn test_set_url_in_repository() {
+ let cases: Vec<(&str, &str, &str, &str)> = vec![
+ (
+ r#"{
+ "repositories": {
+ "first": {
+ "type": "package",
+ "url": "https://first.test"
+ },
+ "foo": {
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ "bar": {
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ }
+}
+"#,
+ r#"{
+ "repositories": {
+ "first": {
+ "type": "package",
+ "url": "https://new.example.org"
+ },
+ "foo": {
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ "bar": {
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ }
+}
+"#,
+ r#"first"#,
+ r#"https://new.example.org"#,
+ ),
+ (
+ r#"{
+ "repositories": {
+ "first": {
+ "type": "package",
+ "url": "https://first.test"
+ },
+ "foo": {
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ "bar": {
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ }
+}
+"#,
+ r#"{
+ "repositories": {
+ "first": {
+ "type": "package",
+ "url": "https://first.test"
+ },
+ "foo": {
+ "type": "vcs",
+ "url": "https://new.example.org"
+ },
+ "bar": {
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ }
+}
+"#,
+ r#"foo"#,
+ r#"https://new.example.org"#,
+ ),
+ (
+ r#"{
+ "repositories": {
+ "first": {
+ "type": "package",
+ "url": "https://first.test"
+ },
+ "foo": {
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ "bar": {
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ }
+}
+"#,
+ r#"{
+ "repositories": {
+ "first": {
+ "type": "package",
+ "url": "https://first.test"
+ },
+ "foo": {
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ "bar": {
+ "type": "vcs",
+ "url": "https://new.example.org"
+ }
+ }
+}
+"#,
+ r#"bar"#,
+ r#"https://new.example.org"#,
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "name": "first",
+ "type": "package",
+ "url": "https://first.test"
+ },
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ {
+ "name": "bar",
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ ]
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "name": "first",
+ "type": "package",
+ "url": "https://new.example.org"
+ },
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ {
+ "name": "bar",
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ ]
+}
+"#,
+ r#"first"#,
+ r#"https://new.example.org"#,
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "name": "first",
+ "type": "package",
+ "url": "https://first.test"
+ },
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ {
+ "name": "bar",
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ ]
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "name": "first",
+ "type": "package",
+ "url": "https://first.test"
+ },
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "https://new.example.org"
+ },
+ {
+ "name": "bar",
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ ]
+}
+"#,
+ r#"foo"#,
+ r#"https://new.example.org"#,
+ ),
+ (
+ r#"{
+ "repositories": [
+ {
+ "name": "first",
+ "type": "package",
+ "url": "https://first.test"
+ },
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ {
+ "name": "bar",
+ "type": "vcs",
+ "url": "https://other.example.org"
+ }
+ ]
+}
+"#,
+ r#"{
+ "repositories": [
+ {
+ "name": "first",
+ "type": "package",
+ "url": "https://first.test"
+ },
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "https://old.example.org"
+ },
+ {
+ "name": "bar",
+ "type": "vcs",
+ "url": "https://new.example.org"
+ }
+ ]
+}
+"#,
+ r#"bar"#,
+ r#"https://new.example.org"#,
+ ),
+ ];
+ for (from, to, name, url) in cases {
+ let mut manipulator = JsonManipulator::new(from.to_string()).unwrap();
+ assert!(manipulator.set_repository_url(name, url).unwrap());
+ assert_eq!(to, manipulator.get_contents());
+ }
+}
+
+#[test]
+#[ignore]
+fn test_add_list_item() {
+ let cases: Vec<(&str, &str, &str, PhpMixed, bool)> = vec![
+ (
+ r#"{}"#,
+ r#"{
+ "main": [1]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(1),
+ true,
+ ),
+ (
+ r#"{
+ "main": [ ]
+}
+"#,
+ r#"{
+ "main": [1]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(1),
+ true,
+ ),
+ (
+ r#"{
+ "main": [ 1 ]
+}
+"#,
+ r#"{
+ "main": [ 1, 2 ]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(2),
+ true,
+ ),
+ (
+ r#"{}"#,
+ r#"{
+ "main": [{
+ "value": 1
+ }]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(1))]),
+ true,
+ ),
+ (
+ r#"{
+ "main": [ ]
+}
+"#,
+ r#"{
+ "main": [{
+ "value": 2
+ }]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(2))]),
+ true,
+ ),
+ (
+ r#"{
+ "main": [ 1 ]
+}
+"#,
+ r#"{
+ "main": [ 1, {
+ "value": 2
+ } ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(2))]),
+ true,
+ ),
+ (
+ r#"{
+ "main": [
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ 1
+ ]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(1),
+ true,
+ ),
+ (
+ r#"{
+ "main": [
+ 1
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ 1,
+ 2
+ ]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(2),
+ true,
+ ),
+ (
+ r#"{
+ "main": [
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ {
+ "value": 1
+ }
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(1))]),
+ true,
+ ),
+ (
+ r#"{
+ "main": [
+ 1
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ 1,
+ {
+ "value": 2
+ }
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(2))]),
+ true,
+ ),
+ (
+ r#"{}"#,
+ r#"{
+ "main": [1]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(1),
+ false,
+ ),
+ (
+ r#"{
+ "main": [ ]
+}
+"#,
+ r#"{
+ "main": [1]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(1),
+ false,
+ ),
+ (
+ r#"{
+ "main": [ 1 ]
+}
+"#,
+ r#"{
+ "main": [ 2, 1 ]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(2),
+ false,
+ ),
+ (
+ r#"{}"#,
+ r#"{
+ "main": [{
+ "value": 1
+ }]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(1))]),
+ false,
+ ),
+ (
+ r#"{
+ "main": [ ]
+}
+"#,
+ r#"{
+ "main": [{
+ "value": 1
+ }]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(1))]),
+ false,
+ ),
+ (
+ r#"{
+ "main": [ 1 ]
+}
+"#,
+ r#"{
+ "main": [ {
+ "value": 2
+ }, 1 ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(2))]),
+ false,
+ ),
+ (
+ r#"{
+ "main": [
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ 1
+ ]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(1),
+ false,
+ ),
+ (
+ r#"{
+ "main": [
+ 1
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ 2,
+ 1
+ ]
+}
+"#,
+ r#"main"#,
+ PhpMixed::Int(2),
+ false,
+ ),
+ (
+ r#"{
+ "main": [
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ {
+ "value": 1
+ }
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(1))]),
+ false,
+ ),
+ (
+ r#"{
+ "main": [
+ 1
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ {
+ "value": 2
+ },
+ 1
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"value"#, PhpMixed::Int(2))]),
+ false,
+ ),
+ ];
+ for (from, to, main_node, value, append) in cases {
+ let mut manipulator = JsonManipulator::new(from.to_string()).unwrap();
+ assert!(manipulator.add_list_item(main_node, value, append).unwrap());
+ assert_eq!(to, manipulator.get_contents());
+ }
+}
+
+#[test]
+#[ignore]
+fn test_remove_list_item() {
+ let cases: Vec<(&str, &str, &str, i64)> = vec![
+ (
+ r#"{
+ "main": [
+ 1, 2, 3
+ ]
+}"#,
+ r#"{
+ "main": [
+ 2, 3
+ ]
+}
+"#,
+ r#"main"#,
+ 0,
+ ),
+ (
+ r#"{
+ "main": [
+ 1, 2, 3
+ ]
+}"#,
+ r#"{
+ "main": [
+ 1, 3
+ ]
+}
+"#,
+ r#"main"#,
+ 1,
+ ),
+ (
+ r#"{
+ "main": [
+ 1, 2, 3
+ ]
+}"#,
+ r#"{
+ "main": [
+ 1, 2
+ ]
+}
+"#,
+ r#"main"#,
+ 2,
+ ),
+ (
+ r#"{
+ "main": [
+ 1,
+ 2,
+ 3
+ ]
+}"#,
+ r#"{
+ "main": [
+ 2,
+ 3
+ ]
+}
+"#,
+ r#"main"#,
+ 0,
+ ),
+ (
+ r#"{
+ "main": [
+ 1,
+ 2,
+ 3
+ ]
+}"#,
+ r#"{
+ "main": [
+ 1,
+ 3
+ ]
+}
+"#,
+ r#"main"#,
+ 1,
+ ),
+ (
+ r#"{
+ "main": [
+ 1,
+ 2,
+ 3
+ ]
+}"#,
+ r#"{
+ "main": [
+ 1,
+ 2
+ ]
+}
+"#,
+ r#"main"#,
+ 2,
+ ),
+ ];
+ for (from, to, main_node, index_to_remove) in cases {
+ let mut manipulator = JsonManipulator::new(from.to_string()).unwrap();
+ assert!(
+ manipulator
+ .remove_list_item(main_node, index_to_remove)
+ .unwrap()
+ );
+ assert_eq!(to, manipulator.get_contents());
+ }
+}
+
+#[test]
+#[ignore]
+fn test_insert_list_item() {
+ let cases: Vec<(&str, &str, &str, PhpMixed, i64)> = vec![
+ (
+ r#"{
+}
+"#,
+ r#"{
+ "main": [{
+ "foo": 1
+ }]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"foo"#, PhpMixed::Int(1))]),
+ 0,
+ ),
+ (
+ r#"{
+ "main": [
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ {
+ "foo": 1
+ }
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"foo"#, PhpMixed::Int(1))]),
+ 0,
+ ),
+ (
+ r#"{
+ "main": [
+ {
+ "foo": 2
+ },
+ {
+ "foo": 4
+ }
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ {
+ "foo": 1
+ },
+ {
+ "foo": 2
+ },
+ {
+ "foo": 4
+ }
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"foo"#, PhpMixed::Int(1))]),
+ 0,
+ ),
+ (
+ r#"{
+ "main": [
+ {
+ "foo": 2
+ },
+ {
+ "foo": 4
+ }
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ {
+ "foo": 2
+ },
+ {
+ "foo": 3
+ },
+ {
+ "foo": 4
+ }
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"foo"#, PhpMixed::Int(3))]),
+ 1,
+ ),
+ (
+ r#"{
+ "main": [
+ {
+ "foo": 2
+ },
+ {
+ "foo": 4
+ }
+ ]
+}
+"#,
+ r#"{
+ "main": [
+ {
+ "foo": 2
+ },
+ {
+ "foo": 4
+ },
+ {
+ "foo": 5
+ }
+ ]
+}
+"#,
+ r#"main"#,
+ arr(&[(r#"foo"#, PhpMixed::Int(5))]),
+ 2,
+ ),
+ ];
+ for (from, to, main_node, value, index_to_insert_at) in cases {
+ let mut manipulator = JsonManipulator::new(from.to_string()).unwrap();
+ assert!(
+ manipulator
+ .insert_list_item(main_node, value, index_to_insert_at)
+ .unwrap()
+ );
+ assert_eq!(to, manipulator.get_contents());
+ }
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_sub_node_from_require() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "package": {
+ "require": {
+ "this/should-not-end-up-in-root-require": "~2.0"
+ },
+ "require-dev": {
+ "this/should-not-end-up-in-root-require-dev": "~2.0"
+ }
+ }
+ }
+ ],
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "require-dev": {
+ "package/d": "*"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.remove_sub_node("require", "package/c").unwrap());
+ assert!(
+ manipulator
+ .remove_sub_node("require-dev", "package/d")
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "package": {
+ "require": {
+ "this/should-not-end-up-in-root-require": "~2.0"
+ },
+ "require-dev": {
+ "this/should-not-end-up-in-root-require-dev": "~2.0"
+ }
+ }
+ }
+ ],
+ "require": {
+ "package/a": "*",
+ "package/b": "*"
+ },
+ "require-dev": {
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_sub_node_preserves_object_type_when_empty() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "test": {"0": "foo"}
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.remove_sub_node("test", "0").unwrap());
+ assert_eq!(
+ r#"{
+ "test": {
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_sub_node_preserves_object_type_when_empty2() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "preferred-install": {"foo/*": "source"}
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .remove_config_setting("preferred-install.foo/*")
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "preferred-install": {
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_sub_node_in_require() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "package": {
+ "require": {
+ "this/should-not-end-up-in-root-require": "~2.0"
+ },
+ "require-dev": {
+ "this/should-not-end-up-in-root-require-dev": "~2.0"
+ }
+ }
+ }
+ ],
+ "require": {
+ "package/a": "*",
+ "package/b": "*"
+ },
+ "require-dev": {
+ "package/d": "*"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_sub_node("require", "package/c", s("*"), true)
+ .unwrap()
+ );
+ assert!(
+ manipulator
+ .add_sub_node("require-dev", "package/e", s("*"), true)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "package": {
+ "require": {
+ "this/should-not-end-up-in-root-require": "~2.0"
+ },
+ "require-dev": {
+ "this/should-not-end-up-in-root-require-dev": "~2.0"
+ }
+ }
+ }
+ ],
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "require-dev": {
+ "package/d": "*",
+ "package/e": "*"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_extra_with_package() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "type": "package",
+ "package": {
+ "authors": [],
+ "extra": {
+ "package-xml": "package.xml"
+ }
+ }
+ }
+ ],
+ "extra": {
+ "auto-append-gitignore": true
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_property("extra.foo-bar", PhpMixed::Bool(true))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "type": "package",
+ "package": {
+ "authors": [],
+ "extra": {
+ "package-xml": "package.xml"
+ }
+ }
+ }
+ ],
+ "extra": {
+ "auto-append-gitignore": true,
+ "foo-bar": true
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_with_package() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "type": "package",
+ "package": {
+ "authors": [],
+ "extra": {
+ "package-xml": "package.xml"
+ }
+ }
+ }
+ ],
+ "config": {
+ "platform": {
+ "php": "5.3.9"
+ }
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_config_setting(
+ "preferred-install.my-organization/stable-package",
+ s("dist")
+ )
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "type": "package",
+ "package": {
+ "authors": [],
+ "extra": {
+ "package-xml": "package.xml"
+ }
+ }
+ }
+ ],
+ "config": {
+ "platform": {
+ "php": "5.3.9"
+ },
+ "preferred-install": {
+ "my-organization/stable-package": "dist"
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_suggest_with_package() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "type": "package",
+ "package": {
+ "authors": [],
+ "extra": {
+ "package-xml": "package.xml"
+ }
+ }
+ }
+ ],
+ "suggest": {
+ "package": "Description"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_property("suggest.new-package", s("new-description"))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "type": "package",
+ "package": {
+ "authors": [],
+ "extra": {
+ "package-xml": "package.xml"
+ }
+ }
+ }
+ ],
+ "suggest": {
+ "package": "Description",
+ "new-package": "new-description"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_repository_can_initialize_empty_repositories() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": {
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_repository("bar", arr(&[("type", s("composer"))]), false)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "name": "bar",
+ "type": "composer"
+ }
+ ]
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_repository_can_initialize_from_scratch() {
- todo!()
+ let mut manipulator = JsonManipulator::new("{\n\t\"a\": \"b\"\n}".to_string()).unwrap();
+
+ assert!(
+ manipulator
+ .add_repository("bar2", arr(&[("type", s("composer"))]), false)
+ .unwrap()
+ );
+ assert_eq!(
+ "{\n\t\"a\": \"b\",\n\t\"repositories\": [{\n\t\t\"name\": \"bar2\",\n\t\t\"type\": \"composer\"\n\t}]\n}\n",
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_repository_can_append() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "lala"
+ }
+ ]
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_repository("bar", arr(&[("type", s("composer"))]), true)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "lala"
+ },
+ {
+ "name": "bar",
+ "type": "composer"
+ }
+ ]
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_repository_can_prepend() {
- todo!()
-}
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "lala"
+ }
+ ]
+}"#
+ .to_string(),
+ )
+ .unwrap();
-#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
-fn test_add_repository() {
- todo!()
+ assert!(
+ manipulator
+ .add_repository("bar", arr(&[("type", s("composer"))]), false)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "name": "bar",
+ "type": "composer"
+ },
+ {
+ "name": "foo",
+ "type": "vcs",
+ "url": "lala"
+ }
+ ]
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_repository_can_override_deep_repos() {
- todo!()
-}
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": {
+ "baz": {
+ "type": "package",
+ "package": {}
+ }
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
-#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
-fn test_set_url_in_repository() {
- todo!()
+ assert!(
+ manipulator
+ .add_repository("baz", arr(&[("type", s("composer"))]), false)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "name": "baz",
+ "type": "composer"
+ }
+ ]
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_insert_repository_before_and_after_by_name() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": {
+ "alpha": {
+ "type": "vcs",
+ "url": "https://example.org/a"
+ },
+ "omega": {
+ "type": "vcs",
+ "url": "https://example.org/o"
+ },
+ "packagist.org": false
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+ assert!(
+ manipulator
+ .insert_repository(
+ "beta",
+ arr(&[("type", s("vcs")), ("url", s("https://example.org/b"))]),
+ "omega",
+ 0
+ )
+ .unwrap()
+ );
+ assert!(
+ manipulator
+ .insert_repository(
+ "gamma",
+ arr(&[("type", s("vcs")), ("url", s("https://example.org/g"))]),
+ "alpha",
+ 1
+ )
+ .unwrap()
+ );
+ assert!(
+ manipulator
+ .insert_repository(
+ "alpha",
+ arr(&[("type", s("vcs")), ("url", s("https://example.org/alpha"))]),
+ "gamma",
+ 0
+ )
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "name": "alpha",
+ "type": "vcs",
+ "url": "https://example.org/alpha"
+ },
+ {
+ "name": "gamma",
+ "type": "vcs",
+ "url": "https://example.org/g"
+ },
+ {
+ "name": "beta",
+ "type": "vcs",
+ "url": "https://example.org/b"
+ },
+ {
+ "name": "omega",
+ "type": "vcs",
+ "url": "https://example.org/o"
+ },
+ {
+ "packagist.org": false
+ }
+ ]
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_repository_removes_from_assoc_but_does_not_converts_from_assoc_to_list() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": {
+ "baz": {
+ "type": "package",
+ "package": {}
+ },
+ "packagist.org": false
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.remove_repository("baz").unwrap());
+ assert_eq!(
+ r#"{
+ "repositories": {
+ "packagist.org": false
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_repository_removes_from_list() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "name": "baz",
+ "type": "package",
+ "package": {
+ }
+ },
+ {
+ "packagist.org": false
+ }
+ ]
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.remove_repository("baz").unwrap());
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "packagist.org": false
+ }
+ ]
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_repository_converts_from_assoc_to_list() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": {
+ "baz": {
+ "type": "package",
+ "package": {}
+ },
+ "packagist.org": false
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_repository("foo", arr(&[("type", s("composer"))]), false)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "repositories": [
+ {
+ "name": "baz",
+ "type": "package",
+ "package": {
+ }
+ },
+ {
+ "packagist.org": false
+ },
+ {
+ "name": "foo",
+ "type": "composer"
+ }
+ ]
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_escapes() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_config_setting("test", s(r#"a\b"#)).unwrap());
+ assert!(
+ manipulator
+ .add_config_setting("test2", s("a\nb\u{0C}a"))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "test": "a\\b",
+ "test2": "a\nb\fa"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_works_from_scratch() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_config_setting("foo.bar", s("baz")).unwrap());
+ assert_eq!(
+ r#"{
+ "config": {
+ "foo": {
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_can_add() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "foo": "bar"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_config_setting("bar", s("baz")).unwrap());
+ assert_eq!(
+ r#"{
+ "config": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_can_overwrite() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "foo": "bar",
+ "bar": "baz"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_config_setting("foo", s("zomg")).unwrap());
+ assert_eq!(
+ r#"{
+ "config": {
+ "foo": "zomg",
+ "bar": "baz"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_can_overwrite_numbers() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "foo": 500
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_config_setting("foo", PhpMixed::Int(50))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "foo": 50
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_can_overwrite_arrays() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "github.com": "foo"
+ },
+ "github-protocols": ["https"]
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_config_setting(
+ "github-protocols",
+ PhpMixed::List(vec![s("https"), s("http")])
+ )
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "github.com": "foo"
+ },
+ "github-protocols": ["https", "http"]
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
+
+ assert!(
+ manipulator
+ .add_config_setting(
+ "github-oauth",
+ arr(&[("github.com", s("bar")), ("alt.example.org", s("baz"))])
+ )
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "github.com": "bar",
+ "alt.example.org": "baz"
+ },
+ "github-protocols": ["https", "http"]
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_can_add_sub_key_in_empty_config() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_config_setting("github-oauth.bar", s("baz"))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_can_add_sub_key_in_empty_val() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "github-oauth": {},
+ "github-oauth2": {
+ }
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_config_setting("github-oauth.bar", s("baz"))
+ .unwrap()
+ );
+ assert!(
+ manipulator
+ .add_config_setting("github-oauth2.a.bar", s("baz2"))
+ .unwrap()
+ );
+ assert!(
+ manipulator
+ .add_config_setting("github-oauth3.b", s("c"))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "bar": "baz"
+ },
+ "github-oauth2": {
+ "a.bar": "baz2"
+ },
+ "github-oauth3": {
+ "b": "c"
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_config_setting_can_add_sub_key_in_hash() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "github.com": "foo"
+ }
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_config_setting("github-oauth.bar", s("baz"))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "github.com": "foo",
+ "bar": "baz"
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_root_setting_does_not_break_dots() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "github-oauth": {
+ "github.com": "foo"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_sub_node("github-oauth", "bar", s("baz"), true)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "github-oauth": {
+ "github.com": "foo",
+ "bar": "baz"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_config_setting_can_remove_sub_key_in_hash() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "github.com": "foo",
+ "bar": "baz"
+ }
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .remove_config_setting("github-oauth.bar")
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "github-oauth": {
+ "github.com": "foo"
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_config_setting_can_remove_sub_key_in_hash_with_siblings() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "config": {
+ "foo": "bar",
+ "github-oauth": {
+ "github.com": "foo",
+ "bar": "baz"
+ }
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .remove_config_setting("github-oauth.bar")
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "config": {
+ "foo": "bar",
+ "github-oauth": {
+ "github.com": "foo"
+ }
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_main_key() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "foo": "bar"
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_main_key("bar", s("baz")).unwrap());
+ assert_eq!(
+ r#"{
+ "foo": "bar",
+ "bar": "baz"
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_main_key_with_content_having_dollar_sign_followed_by_digit() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "foo": "bar"
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_main_key("bar", s("$1baz")).unwrap());
+ assert_eq!(
+ r#"{
+ "foo": "bar",
+ "bar": "$1baz"
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_add_main_key_with_content_having_dollar_sign_followed_by_digit2() {
- todo!()
+ let mut manipulator = JsonManipulator::new("{}".to_string()).unwrap();
+
+ assert!(manipulator.add_main_key("foo", s("$1bar")).unwrap());
+ assert_eq!(
+ r#"{
+ "foo": "$1bar"
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_update_main_key() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "foo": "bar"
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_main_key("foo", s("baz")).unwrap());
+ assert_eq!(
+ r#"{
+ "foo": "baz"
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_update_main_key2() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "a": {
+ "foo": "bar",
+ "baz": "qux"
+ },
+ "foo": "bar",
+ "baz": "bar"
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_main_key("foo", s("baz")).unwrap());
+ assert!(manipulator.add_main_key("baz", s("quux")).unwrap());
+ assert_eq!(
+ r#"{
+ "a": {
+ "foo": "bar",
+ "baz": "qux"
+ },
+ "foo": "baz",
+ "baz": "quux"
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_update_main_key3() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "require": {
+ "php": "5.*"
+ },
+ "require-dev": {
+ "foo": "bar"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_main_key("require-dev", arr(&[("foo", s("qux"))]))
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "require": {
+ "php": "5.*"
+ },
+ "require-dev": {
+ "foo": "qux"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_update_main_key_with_content_having_dollar_sign_followed_by_digit() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "foo": "bar"
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.add_main_key("foo", s("$1bar")).unwrap());
+ assert_eq!(
+ r#"{
+ "foo": "$1bar"
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_main_key() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ {
+ "package": {
+ "require": {
+ "this/should-not-end-up-in-root-require": "~2.0"
+ },
+ "require-dev": {
+ "this/should-not-end-up-in-root-require-dev": "~2.0"
+ }
+ }
+ }
+ ],
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "foo": "bar",
+ "require-dev": {
+ "package/d": "*"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(manipulator.remove_main_key("repositories").unwrap());
+ assert_eq!(
+ r#"{
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "foo": "bar",
+ "require-dev": {
+ "package/d": "*"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
+
+ assert!(manipulator.remove_main_key("foo").unwrap());
+ assert_eq!(
+ r#"{
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "require-dev": {
+ "package/d": "*"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
+
+ assert!(manipulator.remove_main_key("require").unwrap());
+ assert!(manipulator.remove_main_key("require-dev").unwrap());
+ assert_eq!(
+ r#"{
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_main_key_if_empty() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "repositories": [
+ ],
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "foo": "bar",
+ "require-dev": {
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .remove_main_key_if_empty("repositories")
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "foo": "bar",
+ "require-dev": {
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
+
+ assert!(manipulator.remove_main_key_if_empty("foo").unwrap());
+ assert!(manipulator.remove_main_key_if_empty("require").unwrap());
+ assert!(manipulator.remove_main_key_if_empty("require-dev").unwrap());
+ assert_eq!(
+ r#"{
+ "require": {
+ "package/a": "*",
+ "package/b": "*",
+ "package/c": "*"
+ },
+ "foo": "bar"
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_remove_main_key_removes_key_where_value_is_null() {
- todo!()
+ let mut manipulator = JsonManipulator::new(r#"{"foo":9000,"bar":null}"#.to_string()).unwrap();
+
+ manipulator.remove_main_key("bar").unwrap();
+
+ let expected = JsonFile::encode(&arr(&[("foo", PhpMixed::Int(9000))]));
+
+ assert_eq!(
+ JsonFile::parse_json(Some(&expected), None).unwrap(),
+ JsonFile::parse_json(Some(&manipulator.get_contents()), None).unwrap()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_indent_detection() {
- todo!()
-}
+ let mut manipulator =
+ JsonManipulator::new("{\n\n \"require\": {\n \"php\": \"5.*\"\n }\n}".to_string())
+ .unwrap();
-#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
-fn test_remove_main_key_at_end_of_file() {
- todo!()
+ assert!(
+ manipulator
+ .add_main_key("require-dev", arr(&[("foo", s("qux"))]))
+ .unwrap()
+ );
+ assert_eq!(
+ "{\n\n \"require\": {\n \"php\": \"5.*\"\n },\n \"require-dev\": {\n \"foo\": \"qux\"\n }\n}\n",
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
-fn test_add_list_item() {
- todo!()
+#[ignore]
+fn test_remove_main_key_at_end_of_file() {
+ let mut manipulator = JsonManipulator::new(
+ "{\n \"require\": {\n \"package/a\": \"*\"\n }\n}\n".to_string(),
+ )
+ .unwrap();
+ assert!(manipulator.add_main_key("homepage", s("http...")).unwrap());
+ assert!(manipulator.add_main_key("license", s("mit")).unwrap());
+ assert_eq!(
+ r#"{
+ "require": {
+ "package/a": "*"
+ },
+ "homepage": "http...",
+ "license": "mit"
}
+"#,
+ manipulator.get_contents()
+ );
-#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
-fn test_remove_list_item() {
- todo!()
+ assert!(manipulator.remove_main_key("homepage").unwrap());
+ assert!(manipulator.remove_main_key("license").unwrap());
+ assert_eq!(
+ r#"{
+ "require": {
+ "package/a": "*"
+ }
}
-
-#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
-fn test_insert_list_item() {
- todo!()
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_escaped_unicode_does_not_cause_backtrack_limit_error_github_issue8131() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "description": "Some U\u00F1icode",
+ "require": {
+ "foo/bar": "^1.0"
+ }
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_link("require", "foo/baz", "^1.0", false)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "description": "Some U\u00F1icode",
+ "require": {
+ "foo/bar": "^1.0",
+ "foo/baz": "^1.0"
+ }
+}
+"#,
+ manipulator.get_contents()
+ );
}
#[test]
-#[ignore = "test body not yet ported (todo!() stub)"]
+#[ignore]
fn test_large_file_does_not_cause_backtrack_limit_error_github_issue9595() {
- todo!()
+ let mut manipulator = JsonManipulator::new(
+ r#"{
+ "name": "leoloso/pop",
+ "require": {
+ "php": "^7.4|^8.0",
+ "ext-mbstring": "*",
+ "brain/cortex": "~1.0.0",
+ "composer/installers": "~1.0",
+ "composer/semver": "^1.5",
+ "erusev/parsedown": "^1.7",
+ "guzzlehttp/guzzle": "~6.3",
+ "jrfnl/php-cast-to-type": "^2.0",
+ "league/pipeline": "^1.0",
+ "lkwdwrd/wp-muplugin-loader": "dev-feature-composer-v2",
+ "obsidian/polyfill-hrtime": "^0.1",
+ "psr/cache": "^1.0",
+ "symfony/cache": "^5.1",
+ "symfony/config": "^5.1",
+ "symfony/dependency-injection": "^5.1",
+ "symfony/dotenv": "^5.1",
+ "symfony/expression-language": "^5.1",
+ "symfony/polyfill-php72": "^1.18",
+ "symfony/polyfill-php73": "^1.18",
+ "symfony/polyfill-php74": "^1.18",
+ "symfony/polyfill-php80": "^1.18",
+ "symfony/property-access": "^5.1",
+ "symfony/yaml": "^5.1"
+ },
+ "require-dev": {
+ "johnpbloch/wordpress": ">=5.5",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": ">=9.3",
+ "rector/rector": "^0.9",
+ "squizlabs/php_codesniffer": "^3.0",
+ "symfony/var-dumper": "^5.1",
+ "symplify/monorepo-builder": "^9.0",
+ "szepeviktor/phpstan-wordpress": "^0.6.2"
+ },
+ "autoload": {
+ "psr-4": {
+ "GraphQLAPI\\ConvertCaseDirectives\\": "layers/GraphQLAPIForWP/plugins/convert-case-directives/src",
+ "GraphQLAPI\\GraphQLAPI\\": "layers/GraphQLAPIForWP/plugins/graphql-api-for-wp/src",
+ "GraphQLAPI\\SchemaFeedback\\": "layers/GraphQLAPIForWP/plugins/schema-feedback/src",
+ "GraphQLByPoP\\GraphQLClientsForWP\\": "layers/GraphQLByPoP/packages/graphql-clients-for-wp/src",
+ "GraphQLByPoP\\GraphQLEndpointForWP\\": "layers/GraphQLByPoP/packages/graphql-endpoint-for-wp/src",
+ "GraphQLByPoP\\GraphQLParser\\": "layers/GraphQLByPoP/packages/graphql-parser/src",
+ "GraphQLByPoP\\GraphQLQuery\\": "layers/GraphQLByPoP/packages/graphql-query/src",
+ "GraphQLByPoP\\GraphQLRequest\\": "layers/GraphQLByPoP/packages/graphql-request/src",
+ "GraphQLByPoP\\GraphQLServer\\": "layers/GraphQLByPoP/packages/graphql-server/src",
+ "Leoloso\\ExamplesForPoP\\": "layers/Misc/packages/examples-for-pop/src",
+ "PoPSchema\\BasicDirectives\\": "layers/Schema/packages/basic-directives/src",
+ "PoPSchema\\BlockMetadataWP\\": "layers/Schema/packages/block-metadata-for-wp/src",
+ "PoPSchema\\CDNDirective\\": "layers/Schema/packages/cdn-directive/src",
+ "PoPSchema\\CategoriesWP\\": "layers/Schema/packages/categories-wp/src",
+ "PoPSchema\\Categories\\": "layers/Schema/packages/categories/src",
+ "PoPSchema\\CommentMetaWP\\": "layers/Schema/packages/commentmeta-wp/src",
+ "PoPSchema\\CommentMeta\\": "layers/Schema/packages/commentmeta/src",
+ "PoPSchema\\CommentMutationsWP\\": "layers/Schema/packages/comment-mutations-wp/src",
+ "PoPSchema\\CommentMutations\\": "layers/Schema/packages/comment-mutations/src",
+ "PoPSchema\\CommentsWP\\": "layers/Schema/packages/comments-wp/src",
+ "PoPSchema\\Comments\\": "layers/Schema/packages/comments/src",
+ "PoPSchema\\ConvertCaseDirectives\\": "layers/Schema/packages/convert-case-directives/src",
+ "PoPSchema\\CustomPostMediaMutationsWP\\": "layers/Schema/packages/custompostmedia-mutations-wp/src",
+ "PoPSchema\\CustomPostMediaMutations\\": "layers/Schema/packages/custompostmedia-mutations/src",
+ "PoPSchema\\CustomPostMediaWP\\": "layers/Schema/packages/custompostmedia-wp/src",
+ "PoPSchema\\CustomPostMedia\\": "layers/Schema/packages/custompostmedia/src",
+ "PoPSchema\\CustomPostMetaWP\\": "layers/Schema/packages/custompostmeta-wp/src",
+ "PoPSchema\\CustomPostMeta\\": "layers/Schema/packages/custompostmeta/src",
+ "PoPSchema\\CustomPostMutationsWP\\": "layers/Schema/packages/custompost-mutations-wp/src",
+ "PoPSchema\\CustomPostMutations\\": "layers/Schema/packages/custompost-mutations/src",
+ "PoPSchema\\CustomPostsWP\\": "layers/Schema/packages/customposts-wp/src",
+ "PoPSchema\\CustomPosts\\": "layers/Schema/packages/customposts/src",
+ "PoPSchema\\EventMutationsWPEM\\": "layers/Schema/packages/event-mutations-wp-em/src",
+ "PoPSchema\\EventMutations\\": "layers/Schema/packages/event-mutations/src",
+ "PoPSchema\\EventsWPEM\\": "layers/Schema/packages/events-wp-em/src",
+ "PoPSchema\\Events\\": "layers/Schema/packages/events/src",
+ "PoPSchema\\EverythingElseWP\\": "layers/Schema/packages/everythingelse-wp/src",
+ "PoPSchema\\EverythingElse\\": "layers/Schema/packages/everythingelse/src",
+ "PoPSchema\\GenericCustomPosts\\": "layers/Schema/packages/generic-customposts/src",
+ "PoPSchema\\GoogleTranslateDirectiveForCustomPosts\\": "layers/Schema/packages/google-translate-directive-for-customposts/src",
+ "PoPSchema\\GoogleTranslateDirective\\": "layers/Schema/packages/google-translate-directive/src",
+ "PoPSchema\\HighlightsWP\\": "layers/Schema/packages/highlights-wp/src",
+ "PoPSchema\\Highlights\\": "layers/Schema/packages/highlights/src",
+ "PoPSchema\\LocationPostsWP\\": "layers/Schema/packages/locationposts-wp/src",
+ "PoPSchema\\LocationPosts\\": "layers/Schema/packages/locationposts/src",
+ "PoPSchema\\LocationsWPEM\\": "layers/Schema/packages/locations-wp-em/src",
+ "PoPSchema\\Locations\\": "layers/Schema/packages/locations/src",
+ "PoPSchema\\MediaWP\\": "layers/Schema/packages/media-wp/src",
+ "PoPSchema\\Media\\": "layers/Schema/packages/media/src",
+ "PoPSchema\\MenusWP\\": "layers/Schema/packages/menus-wp/src",
+ "PoPSchema\\Menus\\": "layers/Schema/packages/menus/src",
+ "PoPSchema\\MetaQueryWP\\": "layers/Schema/packages/metaquery-wp/src",
+ "PoPSchema\\MetaQuery\\": "layers/Schema/packages/metaquery/src",
+ "PoPSchema\\Meta\\": "layers/Schema/packages/meta/src",
+ "PoPSchema\\NotificationsWP\\": "layers/Schema/packages/notifications-wp/src",
+ "PoPSchema\\Notifications\\": "layers/Schema/packages/notifications/src",
+ "PoPSchema\\PagesWP\\": "layers/Schema/packages/pages-wp/src",
+ "PoPSchema\\Pages\\": "layers/Schema/packages/pages/src",
+ "PoPSchema\\PostMutations\\": "layers/Schema/packages/post-mutations/src",
+ "PoPSchema\\PostTagsWP\\": "layers/Schema/packages/post-tags-wp/src",
+ "PoPSchema\\PostTags\\": "layers/Schema/packages/post-tags/src",
+ "PoPSchema\\PostsWP\\": "layers/Schema/packages/posts-wp/src",
+ "PoPSchema\\Posts\\": "layers/Schema/packages/posts/src",
+ "PoPSchema\\QueriedObjectWP\\": "layers/Schema/packages/queriedobject-wp/src",
+ "PoPSchema\\QueriedObject\\": "layers/Schema/packages/queriedobject/src",
+ "PoPSchema\\SchemaCommons\\": "layers/Schema/packages/schema-commons/src",
+ "PoPSchema\\StancesWP\\": "layers/Schema/packages/stances-wp/src",
+ "PoPSchema\\Stances\\": "layers/Schema/packages/stances/src",
+ "PoPSchema\\TagsWP\\": "layers/Schema/packages/tags-wp/src",
+ "PoPSchema\\Tags\\": "layers/Schema/packages/tags/src",
+ "PoPSchema\\TaxonomiesWP\\": "layers/Schema/packages/taxonomies-wp/src",
+ "PoPSchema\\Taxonomies\\": "layers/Schema/packages/taxonomies/src",
+ "PoPSchema\\TaxonomyMetaWP\\": "layers/Schema/packages/taxonomymeta-wp/src",
+ "PoPSchema\\TaxonomyMeta\\": "layers/Schema/packages/taxonomymeta/src",
+ "PoPSchema\\TaxonomyQueryWP\\": "layers/Schema/packages/taxonomyquery-wp/src",
+ "PoPSchema\\TaxonomyQuery\\": "layers/Schema/packages/taxonomyquery/src",
+ "PoPSchema\\TranslateDirectiveACL\\": "layers/Schema/packages/translate-directive-acl/src",
+ "PoPSchema\\TranslateDirective\\": "layers/Schema/packages/translate-directive/src",
+ "PoPSchema\\UserMetaWP\\": "layers/Schema/packages/usermeta-wp/src",
+ "PoPSchema\\UserMeta\\": "layers/Schema/packages/usermeta/src",
+ "PoPSchema\\UserRolesACL\\": "layers/Schema/packages/user-roles-acl/src",
+ "PoPSchema\\UserRolesAccessControl\\": "layers/Schema/packages/user-roles-access-control/src",
+ "PoPSchema\\UserRolesWP\\": "layers/Schema/packages/user-roles-wp/src",
+ "PoPSchema\\UserRoles\\": "layers/Schema/packages/user-roles/src",
+ "PoPSchema\\UserStateAccessControl\\": "layers/Schema/packages/user-state-access-control/src",
+ "PoPSchema\\UserStateMutationsWP\\": "layers/Schema/packages/user-state-mutations-wp/src",
+ "PoPSchema\\UserStateMutations\\": "layers/Schema/packages/user-state-mutations/src",
+ "PoPSchema\\UserStateWP\\": "layers/Schema/packages/user-state-wp/src",
+ "PoPSchema\\UserState\\": "layers/Schema/packages/user-state/src",
+ "PoPSchema\\UsersWP\\": "layers/Schema/packages/users-wp/src",
+ "PoPSchema\\Users\\": "layers/Schema/packages/users/src",
+ "PoPSitesWassup\\CommentMutations\\": "layers/Wassup/packages/comment-mutations/src",
+ "PoPSitesWassup\\ContactUsMutations\\": "layers/Wassup/packages/contactus-mutations/src",
+ "PoPSitesWassup\\ContactUserMutations\\": "layers/Wassup/packages/contactuser-mutations/src",
+ "PoPSitesWassup\\CustomPostLinkMutations\\": "layers/Wassup/packages/custompostlink-mutations/src",
+ "PoPSitesWassup\\CustomPostMutations\\": "layers/Wassup/packages/custompost-mutations/src",
+ "PoPSitesWassup\\EventLinkMutations\\": "layers/Wassup/packages/eventlink-mutations/src",
+ "PoPSitesWassup\\EventMutations\\": "layers/Wassup/packages/event-mutations/src",
+ "PoPSitesWassup\\EverythingElseMutations\\": "layers/Wassup/packages/everythingelse-mutations/src",
+ "PoPSitesWassup\\FlagMutations\\": "layers/Wassup/packages/flag-mutations/src",
+ "PoPSitesWassup\\FormMutations\\": "layers/Wassup/packages/form-mutations/src",
+ "PoPSitesWassup\\GravityFormsMutations\\": "layers/Wassup/packages/gravityforms-mutations/src",
+ "PoPSitesWassup\\HighlightMutations\\": "layers/Wassup/packages/highlight-mutations/src",
+ "PoPSitesWassup\\LocationMutations\\": "layers/Wassup/packages/location-mutations/src",
+ "PoPSitesWassup\\LocationPostLinkMutations\\": "layers/Wassup/packages/locationpostlink-mutations/src",
+ "PoPSitesWassup\\LocationPostMutations\\": "layers/Wassup/packages/locationpost-mutations/src",
+ "PoPSitesWassup\\NewsletterMutations\\": "layers/Wassup/packages/newsletter-mutations/src",
+ "PoPSitesWassup\\NotificationMutations\\": "layers/Wassup/packages/notification-mutations/src",
+ "PoPSitesWassup\\PostLinkMutations\\": "layers/Wassup/packages/postlink-mutations/src",
+ "PoPSitesWassup\\PostMutations\\": "layers/Wassup/packages/post-mutations/src",
+ "PoPSitesWassup\\ShareMutations\\": "layers/Wassup/packages/share-mutations/src",
+ "PoPSitesWassup\\SocialNetworkMutations\\": "layers/Wassup/packages/socialnetwork-mutations/src",
+ "PoPSitesWassup\\StanceMutations\\": "layers/Wassup/packages/stance-mutations/src",
+ "PoPSitesWassup\\SystemMutations\\": "layers/Wassup/packages/system-mutations/src",
+ "PoPSitesWassup\\UserStateMutations\\": "layers/Wassup/packages/user-state-mutations/src",
+ "PoPSitesWassup\\VolunteerMutations\\": "layers/Wassup/packages/volunteer-mutations/src",
+ "PoPSitesWassup\\Wassup\\": "layers/Wassup/packages/wassup/src",
+ "PoP\\APIClients\\": "layers/API/packages/api-clients/src",
+ "PoP\\APIEndpointsForWP\\": "layers/API/packages/api-endpoints-for-wp/src",
+ "PoP\\APIEndpoints\\": "layers/API/packages/api-endpoints/src",
+ "PoP\\APIMirrorQuery\\": "layers/API/packages/api-mirrorquery/src",
+ "PoP\\API\\": "layers/API/packages/api/src",
+ "PoP\\AccessControl\\": "layers/Engine/packages/access-control/src",
+ "PoP\\ApplicationWP\\": "layers/SiteBuilder/packages/application-wp/src",
+ "PoP\\Application\\": "layers/SiteBuilder/packages/application/src",
+ "PoP\\Base36Definitions\\": "layers/SiteBuilder/packages/definitions-base36/src",
+ "PoP\\CacheControl\\": "layers/Engine/packages/cache-control/src",
+ "PoP\\ComponentModel\\": "layers/Engine/packages/component-model/src",
+ "PoP\\ConfigurableSchemaFeedback\\": "layers/Engine/packages/configurable-schema-feedback/src",
+ "PoP\\ConfigurationComponentModel\\": "layers/SiteBuilder/packages/component-model-configuration/src",
+ "PoP\\DefinitionPersistence\\": "layers/SiteBuilder/packages/definitionpersistence/src",
+ "PoP\\Definitions\\": "layers/Engine/packages/definitions/src",
+ "PoP\\EmojiDefinitions\\": "layers/SiteBuilder/packages/definitions-emoji/src",
+ "PoP\\EngineWP\\": "layers/Engine/packages/engine-wp/src",
+ "PoP\\Engine\\": "layers/Engine/packages/engine/src",
+ "PoP\\FieldQuery\\": "layers/Engine/packages/field-query/src",
+ "PoP\\FileStore\\": "layers/Engine/packages/filestore/src",
+ "PoP\\FunctionFields\\": "layers/Engine/packages/function-fields/src",
+ "PoP\\GraphQLAPI\\": "layers/API/packages/api-graphql/src",
+ "PoP\\GuzzleHelpers\\": "layers/Engine/packages/guzzle-helpers/src",
+ "PoP\\HooksWP\\": "layers/Engine/packages/hooks-wp/src",
+ "PoP\\Hooks\\": "layers/Engine/packages/hooks/src",
+ "PoP\\LooseContracts\\": "layers/Engine/packages/loosecontracts/src",
+ "PoP\\MandatoryDirectivesByConfiguration\\": "layers/Engine/packages/mandatory-directives-by-configuration/src",
+ "PoP\\ModuleRouting\\": "layers/Engine/packages/modulerouting/src",
+ "PoP\\Multisite\\": "layers/SiteBuilder/packages/multisite/src",
+ "PoP\\PoP\\": "src",
+ "PoP\\QueryParsing\\": "layers/Engine/packages/query-parsing/src",
+ "PoP\\RESTAPI\\": "layers/API/packages/api-rest/src",
+ "PoP\\ResourceLoader\\": "layers/SiteBuilder/packages/resourceloader/src",
+ "PoP\\Resources\\": "layers/SiteBuilder/packages/resources/src",
+ "PoP\\Root\\": "layers/Engine/packages/root/src",
+ "PoP\\RoutingWP\\": "layers/Engine/packages/routing-wp/src",
+ "PoP\\Routing\\": "layers/Engine/packages/routing/src",
+ "PoP\\SPA\\": "layers/SiteBuilder/packages/spa/src",
+ "PoP\\SSG\\": "layers/SiteBuilder/packages/static-site-generator/src",
+ "PoP\\SiteWP\\": "layers/SiteBuilder/packages/site-wp/src",
+ "PoP\\Site\\": "layers/SiteBuilder/packages/site/src",
+ "PoP\\TraceTools\\": "layers/Engine/packages/trace-tools/src",
+ "PoP\\TranslationWP\\": "layers/Engine/packages/translation-wp/src",
+ "PoP\\Translation\\": "layers/Engine/packages/translation/src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "GraphQLAPI\\ConvertCaseDirectives\\": "layers/GraphQLAPIForWP/plugins/convert-case-directives/tests",
+ "GraphQLAPI\\GraphQLAPI\\": "layers/GraphQLAPIForWP/plugins/graphql-api-for-wp/tests",
+ "GraphQLAPI\\SchemaFeedback\\": "layers/GraphQLAPIForWP/plugins/schema-feedback/tests",
+ "GraphQLByPoP\\GraphQLClientsForWP\\": "layers/GraphQLByPoP/packages/graphql-clients-for-wp/tests",
+ "GraphQLByPoP\\GraphQLEndpointForWP\\": "layers/GraphQLByPoP/packages/graphql-endpoint-for-wp/tests",
+ "GraphQLByPoP\\GraphQLParser\\": "layers/GraphQLByPoP/packages/graphql-parser/tests",
+ "GraphQLByPoP\\GraphQLQuery\\": "layers/GraphQLByPoP/packages/graphql-query/tests",
+ "GraphQLByPoP\\GraphQLRequest\\": "layers/GraphQLByPoP/packages/graphql-request/tests",
+ "GraphQLByPoP\\GraphQLServer\\": "layers/GraphQLByPoP/packages/graphql-server/tests",
+ "Leoloso\\ExamplesForPoP\\": "layers/Misc/packages/examples-for-pop/tests",
+ "PoPSchema\\BasicDirectives\\": "layers/Schema/packages/basic-directives/tests",
+ "PoPSchema\\BlockMetadataWP\\": "layers/Schema/packages/block-metadata-for-wp/tests",
+ "PoPSchema\\CDNDirective\\": "layers/Schema/packages/cdn-directive/tests",
+ "PoPSchema\\CategoriesWP\\": "layers/Schema/packages/categories-wp/tests",
+ "PoPSchema\\Categories\\": "layers/Schema/packages/categories/tests",
+ "PoPSchema\\CommentMetaWP\\": "layers/Schema/packages/commentmeta-wp/tests",
+ "PoPSchema\\CommentMeta\\": "layers/Schema/packages/commentmeta/tests",
+ "PoPSchema\\CommentMutationsWP\\": "layers/Schema/packages/comment-mutations-wp/tests",
+ "PoPSchema\\CommentMutations\\": "layers/Schema/packages/comment-mutations/tests",
+ "PoPSchema\\CommentsWP\\": "layers/Schema/packages/comments-wp/tests",
+ "PoPSchema\\Comments\\": "layers/Schema/packages/comments/tests",
+ "PoPSchema\\ConvertCaseDirectives\\": "layers/Schema/packages/convert-case-directives/tests",
+ "PoPSchema\\CustomPostMediaMutationsWP\\": "layers/Schema/packages/custompostmedia-mutations-wp/tests",
+ "PoPSchema\\CustomPostMediaMutations\\": "layers/Schema/packages/custompostmedia-mutations/tests",
+ "PoPSchema\\CustomPostMediaWP\\": "layers/Schema/packages/custompostmedia-wp/tests",
+ "PoPSchema\\CustomPostMedia\\": "layers/Schema/packages/custompostmedia/tests",
+ "PoPSchema\\CustomPostMetaWP\\": "layers/Schema/packages/custompostmeta-wp/tests",
+ "PoPSchema\\CustomPostMeta\\": "layers/Schema/packages/custompostmeta/tests",
+ "PoPSchema\\CustomPostMutationsWP\\": "layers/Schema/packages/custompost-mutations-wp/tests",
+ "PoPSchema\\CustomPostMutations\\": "layers/Schema/packages/custompost-mutations/tests",
+ "PoPSchema\\CustomPostsWP\\": "layers/Schema/packages/customposts-wp/tests",
+ "PoPSchema\\CustomPosts\\": "layers/Schema/packages/customposts/tests",
+ "PoPSchema\\EventMutationsWPEM\\": "layers/Schema/packages/event-mutations-wp-em/tests",
+ "PoPSchema\\EventMutations\\": "layers/Schema/packages/event-mutations/tests",
+ "PoPSchema\\EventsWPEM\\": "layers/Schema/packages/events-wp-em/tests",
+ "PoPSchema\\Events\\": "layers/Schema/packages/events/tests",
+ "PoPSchema\\EverythingElseWP\\": "layers/Schema/packages/everythingelse-wp/tests",
+ "PoPSchema\\EverythingElse\\": "layers/Schema/packages/everythingelse/tests",
+ "PoPSchema\\GenericCustomPosts\\": "layers/Schema/packages/generic-customposts/tests",
+ "PoPSchema\\GoogleTranslateDirectiveForCustomPosts\\": "layers/Schema/packages/google-translate-directive-for-customposts/tests",
+ "PoPSchema\\GoogleTranslateDirective\\": "layers/Schema/packages/google-translate-directive/tests",
+ "PoPSchema\\HighlightsWP\\": "layers/Schema/packages/highlights-wp/tests",
+ "PoPSchema\\Highlights\\": "layers/Schema/packages/highlights/tests",
+ "PoPSchema\\LocationPostsWP\\": "layers/Schema/packages/locationposts-wp/tests",
+ "PoPSchema\\LocationPosts\\": "layers/Schema/packages/locationposts/tests",
+ "PoPSchema\\LocationsWPEM\\": "layers/Schema/packages/locations-wp-em/tests",
+ "PoPSchema\\Locations\\": "layers/Schema/packages/locations/tests",
+ "PoPSchema\\MediaWP\\": "layers/Schema/packages/media-wp/tests",
+ "PoPSchema\\Media\\": "layers/Schema/packages/media/tests",
+ "PoPSchema\\MenusWP\\": "layers/Schema/packages/menus-wp/tests",
+ "PoPSchema\\Menus\\": "layers/Schema/packages/menus/tests",
+ "PoPSchema\\MetaQueryWP\\": "layers/Schema/packages/metaquery-wp/tests",
+ "PoPSchema\\MetaQuery\\": "layers/Schema/packages/metaquery/tests",
+ "PoPSchema\\Meta\\": "layers/Schema/packages/meta/tests",
+ "PoPSchema\\NotificationsWP\\": "layers/Schema/packages/notifications-wp/tests",
+ "PoPSchema\\Notifications\\": "layers/Schema/packages/notifications/tests",
+ "PoPSchema\\PagesWP\\": "layers/Schema/packages/pages-wp/tests",
+ "PoPSchema\\Pages\\": "layers/Schema/packages/pages/tests",
+ "PoPSchema\\PostMutations\\": "layers/Schema/packages/post-mutations/tests",
+ "PoPSchema\\PostTagsWP\\": "layers/Schema/packages/post-tags-wp/tests",
+ "PoPSchema\\PostTags\\": "layers/Schema/packages/post-tags/tests",
+ "PoPSchema\\PostsWP\\": "layers/Schema/packages/posts-wp/tests",
+ "PoPSchema\\Posts\\": "layers/Schema/packages/posts/tests",
+ "PoPSchema\\QueriedObjectWP\\": "layers/Schema/packages/queriedobject-wp/tests",
+ "PoPSchema\\QueriedObject\\": "layers/Schema/packages/queriedobject/tests",
+ "PoPSchema\\SchemaCommons\\": "layers/Schema/packages/schema-commons/tests",
+ "PoPSchema\\StancesWP\\": "layers/Schema/packages/stances-wp/tests",
+ "PoPSchema\\Stances\\": "layers/Schema/packages/stances/tests",
+ "PoPSchema\\TagsWP\\": "layers/Schema/packages/tags-wp/tests",
+ "PoPSchema\\Tags\\": "layers/Schema/packages/tags/tests",
+ "PoPSchema\\TaxonomiesWP\\": "layers/Schema/packages/taxonomies-wp/tests",
+ "PoPSchema\\Taxonomies\\": "layers/Schema/packages/taxonomies/tests",
+ "PoPSchema\\TaxonomyMetaWP\\": "layers/Schema/packages/taxonomymeta-wp/tests",
+ "PoPSchema\\TaxonomyMeta\\": "layers/Schema/packages/taxonomymeta/tests",
+ "PoPSchema\\TaxonomyQueryWP\\": "layers/Schema/packages/taxonomyquery-wp/tests",
+ "PoPSchema\\TaxonomyQuery\\": "layers/Schema/packages/taxonomyquery/tests",
+ "PoPSchema\\TranslateDirectiveACL\\": "layers/Schema/packages/translate-directive-acl/tests",
+ "PoPSchema\\TranslateDirective\\": "layers/Schema/packages/translate-directive/tests",
+ "PoPSchema\\UserMetaWP\\": "layers/Schema/packages/usermeta-wp/tests",
+ "PoPSchema\\UserMeta\\": "layers/Schema/packages/usermeta/tests",
+ "PoPSchema\\UserRolesACL\\": "layers/Schema/packages/user-roles-acl/tests",
+ "PoPSchema\\UserRolesAccessControl\\": "layers/Schema/packages/user-roles-access-control/tests",
+ "PoPSchema\\UserRolesWP\\": "layers/Schema/packages/user-roles-wp/tests",
+ "PoPSchema\\UserRoles\\": "layers/Schema/packages/user-roles/tests",
+ "PoPSchema\\UserStateAccessControl\\": "layers/Schema/packages/user-state-access-control/tests",
+ "PoPSchema\\UserStateMutationsWP\\": "layers/Schema/packages/user-state-mutations-wp/tests",
+ "PoPSchema\\UserStateMutations\\": "layers/Schema/packages/user-state-mutations/tests",
+ "PoPSchema\\UserStateWP\\": "layers/Schema/packages/user-state-wp/tests",
+ "PoPSchema\\UserState\\": "layers/Schema/packages/user-state/tests",
+ "PoPSchema\\UsersWP\\": "layers/Schema/packages/users-wp/tests",
+ "PoPSchema\\Users\\": "layers/Schema/packages/users/tests",
+ "PoPSitesWassup\\CommentMutations\\": "layers/Wassup/packages/comment-mutations/tests",
+ "PoPSitesWassup\\ContactUsMutations\\": "layers/Wassup/packages/contactus-mutations/tests",
+ "PoPSitesWassup\\ContactUserMutations\\": "layers/Wassup/packages/contactuser-mutations/tests",
+ "PoPSitesWassup\\CustomPostLinkMutations\\": "layers/Wassup/packages/custompostlink-mutations/tests",
+ "PoPSitesWassup\\CustomPostMutations\\": "layers/Wassup/packages/custompost-mutations/tests",
+ "PoPSitesWassup\\EventLinkMutations\\": "layers/Wassup/packages/eventlink-mutations/tests",
+ "PoPSitesWassup\\EventMutations\\": "layers/Wassup/packages/event-mutations/tests",
+ "PoPSitesWassup\\EverythingElseMutations\\": "layers/Wassup/packages/everythingelse-mutations/tests",
+ "PoPSitesWassup\\FlagMutations\\": "layers/Wassup/packages/flag-mutations/tests",
+ "PoPSitesWassup\\FormMutations\\": "layers/Wassup/packages/form-mutations/tests",
+ "PoPSitesWassup\\GravityFormsMutations\\": "layers/Wassup/packages/gravityforms-mutations/tests",
+ "PoPSitesWassup\\HighlightMutations\\": "layers/Wassup/packages/highlight-mutations/tests",
+ "PoPSitesWassup\\LocationMutations\\": "layers/Wassup/packages/location-mutations/tests",
+ "PoPSitesWassup\\LocationPostLinkMutations\\": "layers/Wassup/packages/locationpostlink-mutations/tests",
+ "PoPSitesWassup\\LocationPostMutations\\": "layers/Wassup/packages/locationpost-mutations/tests",
+ "PoPSitesWassup\\NewsletterMutations\\": "layers/Wassup/packages/newsletter-mutations/tests",
+ "PoPSitesWassup\\NotificationMutations\\": "layers/Wassup/packages/notification-mutations/tests",
+ "PoPSitesWassup\\PostLinkMutations\\": "layers/Wassup/packages/postlink-mutations/tests",
+ "PoPSitesWassup\\PostMutations\\": "layers/Wassup/packages/post-mutations/tests",
+ "PoPSitesWassup\\ShareMutations\\": "layers/Wassup/packages/share-mutations/tests",
+ "PoPSitesWassup\\SocialNetworkMutations\\": "layers/Wassup/packages/socialnetwork-mutations/tests",
+ "PoPSitesWassup\\StanceMutations\\": "layers/Wassup/packages/stance-mutations/tests",
+ "PoPSitesWassup\\SystemMutations\\": "layers/Wassup/packages/system-mutations/tests",
+ "PoPSitesWassup\\UserStateMutations\\": "layers/Wassup/packages/user-state-mutations/tests",
+ "PoPSitesWassup\\VolunteerMutations\\": "layers/Wassup/packages/volunteer-mutations/tests",
+ "PoPSitesWassup\\Wassup\\": "layers/Wassup/packages/wassup/tests",
+ "PoP\\APIClients\\": "layers/API/packages/api-clients/tests",
+ "PoP\\APIEndpointsForWP\\": "layers/API/packages/api-endpoints-for-wp/tests",
+ "PoP\\APIEndpoints\\": "layers/API/packages/api-endpoints/tests",
+ "PoP\\APIMirrorQuery\\": "layers/API/packages/api-mirrorquery/tests",
+ "PoP\\API\\": "layers/API/packages/api/tests",
+ "PoP\\AccessControl\\": "layers/Engine/packages/access-control/tests",
+ "PoP\\ApplicationWP\\": "layers/SiteBuilder/packages/application-wp/tests",
+ "PoP\\Application\\": "layers/SiteBuilder/packages/application/tests",
+ "PoP\\Base36Definitions\\": "layers/SiteBuilder/packages/definitions-base36/tests",
+ "PoP\\CacheControl\\": "layers/Engine/packages/cache-control/tests",
+ "PoP\\ComponentModel\\": "layers/Engine/packages/component-model/tests",
+ "PoP\\ConfigurableSchemaFeedback\\": "layers/Engine/packages/configurable-schema-feedback/tests",
+ "PoP\\ConfigurationComponentModel\\": "layers/SiteBuilder/packages/component-model-configuration/tests",
+ "PoP\\DefinitionPersistence\\": "layers/SiteBuilder/packages/definitionpersistence/tests",
+ "PoP\\Definitions\\": "layers/Engine/packages/definitions/tests",
+ "PoP\\EmojiDefinitions\\": "layers/SiteBuilder/packages/definitions-emoji/tests",
+ "PoP\\EngineWP\\": "layers/Engine/packages/engine-wp/tests",
+ "PoP\\Engine\\": "layers/Engine/packages/engine/tests",
+ "PoP\\FieldQuery\\": "layers/Engine/packages/field-query/tests",
+ "PoP\\FileStore\\": "layers/Engine/packages/filestore/tests",
+ "PoP\\FunctionFields\\": "layers/Engine/packages/function-fields/tests",
+ "PoP\\GraphQLAPI\\": "layers/API/packages/api-graphql/tests",
+ "PoP\\GuzzleHelpers\\": "layers/Engine/packages/guzzle-helpers/tests",
+ "PoP\\HooksWP\\": "layers/Engine/packages/hooks-wp/tests",
+ "PoP\\Hooks\\": "layers/Engine/packages/hooks/tests",
+ "PoP\\LooseContracts\\": "layers/Engine/packages/loosecontracts/tests",
+ "PoP\\MandatoryDirectivesByConfiguration\\": "layers/Engine/packages/mandatory-directives-by-configuration/tests",
+ "PoP\\ModuleRouting\\": "layers/Engine/packages/modulerouting/tests",
+ "PoP\\Multisite\\": "layers/SiteBuilder/packages/multisite/tests",
+ "PoP\\QueryParsing\\": "layers/Engine/packages/query-parsing/tests",
+ "PoP\\RESTAPI\\": "layers/API/packages/api-rest/tests",
+ "PoP\\ResourceLoader\\": "layers/SiteBuilder/packages/resourceloader/tests",
+ "PoP\\Resources\\": "layers/SiteBuilder/packages/resources/tests",
+ "PoP\\Root\\": "layers/Engine/packages/root/tests",
+ "PoP\\RoutingWP\\": "layers/Engine/packages/routing-wp/tests",
+ "PoP\\Routing\\": "layers/Engine/packages/routing/tests",
+ "PoP\\SPA\\": "layers/SiteBuilder/packages/spa/tests",
+ "PoP\\SSG\\": "layers/SiteBuilder/packages/static-site-generator/tests",
+ "PoP\\SiteWP\\": "layers/SiteBuilder/packages/site-wp/tests",
+ "PoP\\Site\\": "layers/SiteBuilder/packages/site/tests",
+ "PoP\\TraceTools\\": "layers/Engine/packages/trace-tools/tests",
+ "PoP\\TranslationWP\\": "layers/Engine/packages/translation-wp/tests",
+ "PoP\\Translation\\": "layers/Engine/packages/translation/tests"
+ }
+ },
+ "extra": {
+ "wordpress-install-dir": "vendor/wordpress/wordpress",
+ "merge-plugin": {
+ "include": [
+ "composer.local.json"
+ ],
+ "recurse": true,
+ "replace": false,
+ "ignore-duplicates": false,
+ "merge-dev": true,
+ "merge-extra": false,
+ "merge-extra-deep": false,
+ "merge-scripts": false
+ }
+ },
+ "replace": {
+ "getpop/access-control": "self.version",
+ "getpop/api": "self.version",
+ "getpop/api-clients": "self.version",
+ "getpop/api-endpoints": "self.version",
+ "getpop/api-endpoints-for-wp": "self.version",
+ "getpop/api-graphql": "self.version",
+ "getpop/api-mirrorquery": "self.version",
+ "getpop/api-rest": "self.version",
+ "getpop/application": "self.version",
+ "getpop/application-wp": "self.version",
+ "getpop/cache-control": "self.version",
+ "getpop/component-model": "self.version",
+ "getpop/component-model-configuration": "self.version",
+ "getpop/configurable-schema-feedback": "self.version",
+ "getpop/definitionpersistence": "self.version",
+ "getpop/definitions": "self.version",
+ "getpop/definitions-base36": "self.version",
+ "getpop/definitions-emoji": "self.version",
+ "getpop/engine": "self.version",
+ "getpop/engine-wp": "self.version",
+ "getpop/engine-wp-bootloader": "self.version",
+ "getpop/field-query": "self.version",
+ "getpop/filestore": "self.version",
+ "getpop/function-fields": "self.version",
+ "getpop/guzzle-helpers": "self.version",
+ "getpop/hooks": "self.version",
+ "getpop/hooks-wp": "self.version",
+ "getpop/loosecontracts": "self.version",
+ "getpop/mandatory-directives-by-configuration": "self.version",
+ "getpop/migrate-api": "self.version",
+ "getpop/migrate-api-graphql": "self.version",
+ "getpop/migrate-component-model": "self.version",
+ "getpop/migrate-component-model-configuration": "self.version",
+ "getpop/migrate-engine": "self.version",
+ "getpop/migrate-engine-wp": "self.version",
+ "getpop/migrate-static-site-generator": "self.version",
+ "getpop/modulerouting": "self.version",
+ "getpop/multisite": "self.version",
+ "getpop/query-parsing": "self.version",
+ "getpop/resourceloader": "self.version",
+ "getpop/resources": "self.version",
+ "getpop/root": "self.version",
+ "getpop/routing": "self.version",
+ "getpop/routing-wp": "self.version",
+ "getpop/site": "self.version",
+ "getpop/site-wp": "self.version",
+ "getpop/spa": "self.version",
+ "getpop/static-site-generator": "self.version",
+ "getpop/trace-tools": "self.version",
+ "getpop/translation": "self.version",
+ "getpop/translation-wp": "self.version",
+ "graphql-api/convert-case-directives": "self.version",
+ "graphql-api/graphql-api-for-wp": "self.version",
+ "graphql-api/schema-feedback": "self.version",
+ "graphql-by-pop/graphql-clients-for-wp": "self.version",
+ "graphql-by-pop/graphql-endpoint-for-wp": "self.version",
+ "graphql-by-pop/graphql-parser": "self.version",
+ "graphql-by-pop/graphql-query": "self.version",
+ "graphql-by-pop/graphql-request": "self.version",
+ "graphql-by-pop/graphql-server": "self.version",
+ "leoloso/examples-for-pop": "self.version",
+ "pop-migrate-everythingelse/cssconverter": "self.version",
+ "pop-migrate-everythingelse/ssr": "self.version",
+ "pop-schema/basic-directives": "self.version",
+ "pop-schema/block-metadata-for-wp": "self.version",
+ "pop-schema/categories": "self.version",
+ "pop-schema/categories-wp": "self.version",
+ "pop-schema/cdn-directive": "self.version",
+ "pop-schema/comment-mutations": "self.version",
+ "pop-schema/comment-mutations-wp": "self.version",
+ "pop-schema/commentmeta": "self.version",
+ "pop-schema/commentmeta-wp": "self.version",
+ "pop-schema/comments": "self.version",
+ "pop-schema/comments-wp": "self.version",
+ "pop-schema/convert-case-directives": "self.version",
+ "pop-schema/custompost-mutations": "self.version",
+ "pop-schema/custompost-mutations-wp": "self.version",
+ "pop-schema/custompostmedia": "self.version",
+ "pop-schema/custompostmedia-mutations": "self.version",
+ "pop-schema/custompostmedia-mutations-wp": "self.version",
+ "pop-schema/custompostmedia-wp": "self.version",
+ "pop-schema/custompostmeta": "self.version",
+ "pop-schema/custompostmeta-wp": "self.version",
+ "pop-schema/customposts": "self.version",
+ "pop-schema/customposts-wp": "self.version",
+ "pop-schema/event-mutations": "self.version",
+ "pop-schema/event-mutations-wp-em": "self.version",
+ "pop-schema/events": "self.version",
+ "pop-schema/events-wp-em": "self.version",
+ "pop-schema/everythingelse": "self.version",
+ "pop-schema/everythingelse-wp": "self.version",
+ "pop-schema/generic-customposts": "self.version",
+ "pop-schema/google-translate-directive": "self.version",
+ "pop-schema/google-translate-directive-for-customposts": "self.version",
+ "pop-schema/highlights": "self.version",
+ "pop-schema/highlights-wp": "self.version",
+ "pop-schema/locationposts": "self.version",
+ "pop-schema/locationposts-wp": "self.version",
+ "pop-schema/locations": "self.version",
+ "pop-schema/locations-wp-em": "self.version",
+ "pop-schema/media": "self.version",
+ "pop-schema/media-wp": "self.version",
+ "pop-schema/menus": "self.version",
+ "pop-schema/menus-wp": "self.version",
+ "pop-schema/meta": "self.version",
+ "pop-schema/metaquery": "self.version",
+ "pop-schema/metaquery-wp": "self.version",
+ "pop-schema/migrate-categories": "self.version",
+ "pop-schema/migrate-categories-wp": "self.version",
+ "pop-schema/migrate-commentmeta": "self.version",
+ "pop-schema/migrate-commentmeta-wp": "self.version",
+ "pop-schema/migrate-comments": "self.version",
+ "pop-schema/migrate-comments-wp": "self.version",
+ "pop-schema/migrate-custompostmedia": "self.version",
+ "pop-schema/migrate-custompostmedia-wp": "self.version",
+ "pop-schema/migrate-custompostmeta": "self.version",
+ "pop-schema/migrate-custompostmeta-wp": "self.version",
+ "pop-schema/migrate-customposts": "self.version",
+ "pop-schema/migrate-customposts-wp": "self.version",
+ "pop-schema/migrate-events": "self.version",
+ "pop-schema/migrate-events-wp-em": "self.version",
+ "pop-schema/migrate-everythingelse": "self.version",
+ "pop-schema/migrate-locations": "self.version",
+ "pop-schema/migrate-locations-wp-em": "self.version",
+ "pop-schema/migrate-media": "self.version",
+ "pop-schema/migrate-media-wp": "self.version",
+ "pop-schema/migrate-meta": "self.version",
+ "pop-schema/migrate-metaquery": "self.version",
+ "pop-schema/migrate-metaquery-wp": "self.version",
+ "pop-schema/migrate-pages": "self.version",
+ "pop-schema/migrate-pages-wp": "self.version",
+ "pop-schema/migrate-post-tags": "self.version",
+ "pop-schema/migrate-post-tags-wp": "self.version",
+ "pop-schema/migrate-posts": "self.version",
+ "pop-schema/migrate-posts-wp": "self.version",
+ "pop-schema/migrate-queriedobject": "self.version",
+ "pop-schema/migrate-queriedobject-wp": "self.version",
+ "pop-schema/migrate-tags": "self.version",
+ "pop-schema/migrate-tags-wp": "self.version",
+ "pop-schema/migrate-taxonomies": "self.version",
+ "pop-schema/migrate-taxonomies-wp": "self.version",
+ "pop-schema/migrate-taxonomymeta": "self.version",
+ "pop-schema/migrate-taxonomymeta-wp": "self.version",
+ "pop-schema/migrate-taxonomyquery": "self.version",
+ "pop-schema/migrate-taxonomyquery-wp": "self.version",
+ "pop-schema/migrate-usermeta": "self.version",
+ "pop-schema/migrate-usermeta-wp": "self.version",
+ "pop-schema/migrate-users": "self.version",
+ "pop-schema/migrate-users-wp": "self.version",
+ "pop-schema/notifications": "self.version",
+ "pop-schema/notifications-wp": "self.version",
+ "pop-schema/pages": "self.version",
+ "pop-schema/pages-wp": "self.version",
+ "pop-schema/post-mutations": "self.version",
+ "pop-schema/post-tags": "self.version",
+ "pop-schema/post-tags-wp": "self.version",
+ "pop-schema/posts": "self.version",
+ "pop-schema/posts-wp": "self.version",
+ "pop-schema/queriedobject": "self.version",
+ "pop-schema/queriedobject-wp": "self.version",
+ "pop-schema/schema-commons": "self.version",
+ "pop-schema/stances": "self.version",
+ "pop-schema/stances-wp": "self.version",
+ "pop-schema/tags": "self.version",
+ "pop-schema/tags-wp": "self.version",
+ "pop-schema/taxonomies": "self.version",
+ "pop-schema/taxonomies-wp": "self.version",
+ "pop-schema/taxonomymeta": "self.version",
+ "pop-schema/taxonomymeta-wp": "self.version",
+ "pop-schema/taxonomyquery": "self.version",
+ "pop-schema/taxonomyquery-wp": "self.version",
+ "pop-schema/translate-directive": "self.version",
+ "pop-schema/translate-directive-acl": "self.version",
+ "pop-schema/user-roles": "self.version",
+ "pop-schema/user-roles-access-control": "self.version",
+ "pop-schema/user-roles-acl": "self.version",
+ "pop-schema/user-roles-wp": "self.version",
+ "pop-schema/user-state": "self.version",
+ "pop-schema/user-state-access-control": "self.version",
+ "pop-schema/user-state-mutations": "self.version",
+ "pop-schema/user-state-mutations-wp": "self.version",
+ "pop-schema/user-state-wp": "self.version",
+ "pop-schema/usermeta": "self.version",
+ "pop-schema/usermeta-wp": "self.version",
+ "pop-schema/users": "self.version",
+ "pop-schema/users-wp": "self.version",
+ "pop-sites-wassup/comment-mutations": "self.version",
+ "pop-sites-wassup/contactus-mutations": "self.version",
+ "pop-sites-wassup/contactuser-mutations": "self.version",
+ "pop-sites-wassup/custompost-mutations": "self.version",
+ "pop-sites-wassup/custompostlink-mutations": "self.version",
+ "pop-sites-wassup/event-mutations": "self.version",
+ "pop-sites-wassup/eventlink-mutations": "self.version",
+ "pop-sites-wassup/everythingelse-mutations": "self.version",
+ "pop-sites-wassup/flag-mutations": "self.version",
+ "pop-sites-wassup/form-mutations": "self.version",
+ "pop-sites-wassup/gravityforms-mutations": "self.version",
+ "pop-sites-wassup/highlight-mutations": "self.version",
+ "pop-sites-wassup/location-mutations": "self.version",
+ "pop-sites-wassup/locationpost-mutations": "self.version",
+ "pop-sites-wassup/locationpostlink-mutations": "self.version",
+ "pop-sites-wassup/newsletter-mutations": "self.version",
+ "pop-sites-wassup/notification-mutations": "self.version",
+ "pop-sites-wassup/post-mutations": "self.version",
+ "pop-sites-wassup/postlink-mutations": "self.version",
+ "pop-sites-wassup/share-mutations": "self.version",
+ "pop-sites-wassup/socialnetwork-mutations": "self.version",
+ "pop-sites-wassup/stance-mutations": "self.version",
+ "pop-sites-wassup/system-mutations": "self.version",
+ "pop-sites-wassup/user-state-mutations": "self.version",
+ "pop-sites-wassup/volunteer-mutations": "self.version",
+ "pop-sites-wassup/wassup": "self.version"
+ },
+ "authors": [
+ {
+ "name": "Leonardo Losoviz",
+ "email": "leo@getpop.org",
+ "homepage": "https://getpop.org"
+ }
+ ],
+ "description": "Monorepo for all the PoP packages",
+ "license": "GPL-2.0-or-later",
+ "config": {
+ "sort-packages": true
+ },
+ "repositories": [
+ {
+ "type": "composer",
+ "url": "https://wpackagist.org"
+ },
+ {
+ "type": "vcs",
+ "url": "https://github.com/leoloso/wp-muplugin-loader.git"
+ },
+ {
+ "type": "vcs",
+ "url": "https://github.com/mcaskill/composer-merge-plugin.git"
+ }
+ ],
+ "scripts": {
+ "test": "phpunit",
+ "check-style": "phpcs -n src $(monorepo-builder source-packages --subfolder=src --subfolder=tests)",
+ "fix-style": "phpcbf -n src $(monorepo-builder source-packages --subfolder=src --subfolder=tests)",
+ "analyse": "ci/phpstan.sh \". $(monorepo-builder source-packages --skip-unmigrated)\"",
+ "preview-src-downgrade": "rector process $(monorepo-builder source-packages --subfolder=src) --config=rector-downgrade-code.php --ansi --dry-run || true",
+ "preview-vendor-downgrade": "layers/Engine/packages/root/ci/downgrade_code.sh 7.1 rector-downgrade-code.php --dry-run || true",
+ "preview-code-downgrade": [
+ "@preview-src-downgrade",
+ "@preview-vendor-downgrade"
+ ],
+ "build-server": [
+ "lando init --source remote --remote-url https://wordpress.org/latest.tar.gz --recipe wordpress --webroot wordpress --name graphql-api-dev",
+ "@start-server"
+ ],
+ "start-server": [
+ "cd layers/GraphQLAPIForWP/plugins/graphql-api-for-wp && composer install",
+ "lando start"
+ ],
+ "rebuild-server": "lando rebuild -y",
+ "merge-monorepo": "monorepo-builder merge --ansi",
+ "propagate-monorepo": "monorepo-builder propagate --ansi",
+ "validate-monorepo": "monorepo-builder validate --ansi",
+ "release": "monorepo-builder release patch --ansi"
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}"#
+ .to_string(),
+ )
+ .unwrap();
+
+ assert!(
+ manipulator
+ .add_sub_node("config", "platform-check", PhpMixed::Bool(false), true)
+ .unwrap()
+ );
+ assert_eq!(
+ r#"{
+ "name": "leoloso/pop",
+ "require": {
+ "php": "^7.4|^8.0",
+ "ext-mbstring": "*",
+ "brain/cortex": "~1.0.0",
+ "composer/installers": "~1.0",
+ "composer/semver": "^1.5",
+ "erusev/parsedown": "^1.7",
+ "guzzlehttp/guzzle": "~6.3",
+ "jrfnl/php-cast-to-type": "^2.0",
+ "league/pipeline": "^1.0",
+ "lkwdwrd/wp-muplugin-loader": "dev-feature-composer-v2",
+ "obsidian/polyfill-hrtime": "^0.1",
+ "psr/cache": "^1.0",
+ "symfony/cache": "^5.1",
+ "symfony/config": "^5.1",
+ "symfony/dependency-injection": "^5.1",
+ "symfony/dotenv": "^5.1",
+ "symfony/expression-language": "^5.1",
+ "symfony/polyfill-php72": "^1.18",
+ "symfony/polyfill-php73": "^1.18",
+ "symfony/polyfill-php74": "^1.18",
+ "symfony/polyfill-php80": "^1.18",
+ "symfony/property-access": "^5.1",
+ "symfony/yaml": "^5.1"
+ },
+ "require-dev": {
+ "johnpbloch/wordpress": ">=5.5",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": ">=9.3",
+ "rector/rector": "^0.9",
+ "squizlabs/php_codesniffer": "^3.0",
+ "symfony/var-dumper": "^5.1",
+ "symplify/monorepo-builder": "^9.0",
+ "szepeviktor/phpstan-wordpress": "^0.6.2"
+ },
+ "autoload": {
+ "psr-4": {
+ "GraphQLAPI\\ConvertCaseDirectives\\": "layers/GraphQLAPIForWP/plugins/convert-case-directives/src",
+ "GraphQLAPI\\GraphQLAPI\\": "layers/GraphQLAPIForWP/plugins/graphql-api-for-wp/src",
+ "GraphQLAPI\\SchemaFeedback\\": "layers/GraphQLAPIForWP/plugins/schema-feedback/src",
+ "GraphQLByPoP\\GraphQLClientsForWP\\": "layers/GraphQLByPoP/packages/graphql-clients-for-wp/src",
+ "GraphQLByPoP\\GraphQLEndpointForWP\\": "layers/GraphQLByPoP/packages/graphql-endpoint-for-wp/src",
+ "GraphQLByPoP\\GraphQLParser\\": "layers/GraphQLByPoP/packages/graphql-parser/src",
+ "GraphQLByPoP\\GraphQLQuery\\": "layers/GraphQLByPoP/packages/graphql-query/src",
+ "GraphQLByPoP\\GraphQLRequest\\": "layers/GraphQLByPoP/packages/graphql-request/src",
+ "GraphQLByPoP\\GraphQLServer\\": "layers/GraphQLByPoP/packages/graphql-server/src",
+ "Leoloso\\ExamplesForPoP\\": "layers/Misc/packages/examples-for-pop/src",
+ "PoPSchema\\BasicDirectives\\": "layers/Schema/packages/basic-directives/src",
+ "PoPSchema\\BlockMetadataWP\\": "layers/Schema/packages/block-metadata-for-wp/src",
+ "PoPSchema\\CDNDirective\\": "layers/Schema/packages/cdn-directive/src",
+ "PoPSchema\\CategoriesWP\\": "layers/Schema/packages/categories-wp/src",
+ "PoPSchema\\Categories\\": "layers/Schema/packages/categories/src",
+ "PoPSchema\\CommentMetaWP\\": "layers/Schema/packages/commentmeta-wp/src",
+ "PoPSchema\\CommentMeta\\": "layers/Schema/packages/commentmeta/src",
+ "PoPSchema\\CommentMutationsWP\\": "layers/Schema/packages/comment-mutations-wp/src",
+ "PoPSchema\\CommentMutations\\": "layers/Schema/packages/comment-mutations/src",
+ "PoPSchema\\CommentsWP\\": "layers/Schema/packages/comments-wp/src",
+ "PoPSchema\\Comments\\": "layers/Schema/packages/comments/src",
+ "PoPSchema\\ConvertCaseDirectives\\": "layers/Schema/packages/convert-case-directives/src",
+ "PoPSchema\\CustomPostMediaMutationsWP\\": "layers/Schema/packages/custompostmedia-mutations-wp/src",
+ "PoPSchema\\CustomPostMediaMutations\\": "layers/Schema/packages/custompostmedia-mutations/src",
+ "PoPSchema\\CustomPostMediaWP\\": "layers/Schema/packages/custompostmedia-wp/src",
+ "PoPSchema\\CustomPostMedia\\": "layers/Schema/packages/custompostmedia/src",
+ "PoPSchema\\CustomPostMetaWP\\": "layers/Schema/packages/custompostmeta-wp/src",
+ "PoPSchema\\CustomPostMeta\\": "layers/Schema/packages/custompostmeta/src",
+ "PoPSchema\\CustomPostMutationsWP\\": "layers/Schema/packages/custompost-mutations-wp/src",
+ "PoPSchema\\CustomPostMutations\\": "layers/Schema/packages/custompost-mutations/src",
+ "PoPSchema\\CustomPostsWP\\": "layers/Schema/packages/customposts-wp/src",
+ "PoPSchema\\CustomPosts\\": "layers/Schema/packages/customposts/src",
+ "PoPSchema\\EventMutationsWPEM\\": "layers/Schema/packages/event-mutations-wp-em/src",
+ "PoPSchema\\EventMutations\\": "layers/Schema/packages/event-mutations/src",
+ "PoPSchema\\EventsWPEM\\": "layers/Schema/packages/events-wp-em/src",
+ "PoPSchema\\Events\\": "layers/Schema/packages/events/src",
+ "PoPSchema\\EverythingElseWP\\": "layers/Schema/packages/everythingelse-wp/src",
+ "PoPSchema\\EverythingElse\\": "layers/Schema/packages/everythingelse/src",
+ "PoPSchema\\GenericCustomPosts\\": "layers/Schema/packages/generic-customposts/src",
+ "PoPSchema\\GoogleTranslateDirectiveForCustomPosts\\": "layers/Schema/packages/google-translate-directive-for-customposts/src",
+ "PoPSchema\\GoogleTranslateDirective\\": "layers/Schema/packages/google-translate-directive/src",
+ "PoPSchema\\HighlightsWP\\": "layers/Schema/packages/highlights-wp/src",
+ "PoPSchema\\Highlights\\": "layers/Schema/packages/highlights/src",
+ "PoPSchema\\LocationPostsWP\\": "layers/Schema/packages/locationposts-wp/src",
+ "PoPSchema\\LocationPosts\\": "layers/Schema/packages/locationposts/src",
+ "PoPSchema\\LocationsWPEM\\": "layers/Schema/packages/locations-wp-em/src",
+ "PoPSchema\\Locations\\": "layers/Schema/packages/locations/src",
+ "PoPSchema\\MediaWP\\": "layers/Schema/packages/media-wp/src",
+ "PoPSchema\\Media\\": "layers/Schema/packages/media/src",
+ "PoPSchema\\MenusWP\\": "layers/Schema/packages/menus-wp/src",
+ "PoPSchema\\Menus\\": "layers/Schema/packages/menus/src",
+ "PoPSchema\\MetaQueryWP\\": "layers/Schema/packages/metaquery-wp/src",
+ "PoPSchema\\MetaQuery\\": "layers/Schema/packages/metaquery/src",
+ "PoPSchema\\Meta\\": "layers/Schema/packages/meta/src",
+ "PoPSchema\\NotificationsWP\\": "layers/Schema/packages/notifications-wp/src",
+ "PoPSchema\\Notifications\\": "layers/Schema/packages/notifications/src",
+ "PoPSchema\\PagesWP\\": "layers/Schema/packages/pages-wp/src",
+ "PoPSchema\\Pages\\": "layers/Schema/packages/pages/src",
+ "PoPSchema\\PostMutations\\": "layers/Schema/packages/post-mutations/src",
+ "PoPSchema\\PostTagsWP\\": "layers/Schema/packages/post-tags-wp/src",
+ "PoPSchema\\PostTags\\": "layers/Schema/packages/post-tags/src",
+ "PoPSchema\\PostsWP\\": "layers/Schema/packages/posts-wp/src",
+ "PoPSchema\\Posts\\": "layers/Schema/packages/posts/src",
+ "PoPSchema\\QueriedObjectWP\\": "layers/Schema/packages/queriedobject-wp/src",
+ "PoPSchema\\QueriedObject\\": "layers/Schema/packages/queriedobject/src",
+ "PoPSchema\\SchemaCommons\\": "layers/Schema/packages/schema-commons/src",
+ "PoPSchema\\StancesWP\\": "layers/Schema/packages/stances-wp/src",
+ "PoPSchema\\Stances\\": "layers/Schema/packages/stances/src",
+ "PoPSchema\\TagsWP\\": "layers/Schema/packages/tags-wp/src",
+ "PoPSchema\\Tags\\": "layers/Schema/packages/tags/src",
+ "PoPSchema\\TaxonomiesWP\\": "layers/Schema/packages/taxonomies-wp/src",
+ "PoPSchema\\Taxonomies\\": "layers/Schema/packages/taxonomies/src",
+ "PoPSchema\\TaxonomyMetaWP\\": "layers/Schema/packages/taxonomymeta-wp/src",
+ "PoPSchema\\TaxonomyMeta\\": "layers/Schema/packages/taxonomymeta/src",
+ "PoPSchema\\TaxonomyQueryWP\\": "layers/Schema/packages/taxonomyquery-wp/src",
+ "PoPSchema\\TaxonomyQuery\\": "layers/Schema/packages/taxonomyquery/src",
+ "PoPSchema\\TranslateDirectiveACL\\": "layers/Schema/packages/translate-directive-acl/src",
+ "PoPSchema\\TranslateDirective\\": "layers/Schema/packages/translate-directive/src",
+ "PoPSchema\\UserMetaWP\\": "layers/Schema/packages/usermeta-wp/src",
+ "PoPSchema\\UserMeta\\": "layers/Schema/packages/usermeta/src",
+ "PoPSchema\\UserRolesACL\\": "layers/Schema/packages/user-roles-acl/src",
+ "PoPSchema\\UserRolesAccessControl\\": "layers/Schema/packages/user-roles-access-control/src",
+ "PoPSchema\\UserRolesWP\\": "layers/Schema/packages/user-roles-wp/src",
+ "PoPSchema\\UserRoles\\": "layers/Schema/packages/user-roles/src",
+ "PoPSchema\\UserStateAccessControl\\": "layers/Schema/packages/user-state-access-control/src",
+ "PoPSchema\\UserStateMutationsWP\\": "layers/Schema/packages/user-state-mutations-wp/src",
+ "PoPSchema\\UserStateMutations\\": "layers/Schema/packages/user-state-mutations/src",
+ "PoPSchema\\UserStateWP\\": "layers/Schema/packages/user-state-wp/src",
+ "PoPSchema\\UserState\\": "layers/Schema/packages/user-state/src",
+ "PoPSchema\\UsersWP\\": "layers/Schema/packages/users-wp/src",
+ "PoPSchema\\Users\\": "layers/Schema/packages/users/src",
+ "PoPSitesWassup\\CommentMutations\\": "layers/Wassup/packages/comment-mutations/src",
+ "PoPSitesWassup\\ContactUsMutations\\": "layers/Wassup/packages/contactus-mutations/src",
+ "PoPSitesWassup\\ContactUserMutations\\": "layers/Wassup/packages/contactuser-mutations/src",
+ "PoPSitesWassup\\CustomPostLinkMutations\\": "layers/Wassup/packages/custompostlink-mutations/src",
+ "PoPSitesWassup\\CustomPostMutations\\": "layers/Wassup/packages/custompost-mutations/src",
+ "PoPSitesWassup\\EventLinkMutations\\": "layers/Wassup/packages/eventlink-mutations/src",
+ "PoPSitesWassup\\EventMutations\\": "layers/Wassup/packages/event-mutations/src",
+ "PoPSitesWassup\\EverythingElseMutations\\": "layers/Wassup/packages/everythingelse-mutations/src",
+ "PoPSitesWassup\\FlagMutations\\": "layers/Wassup/packages/flag-mutations/src",
+ "PoPSitesWassup\\FormMutations\\": "layers/Wassup/packages/form-mutations/src",
+ "PoPSitesWassup\\GravityFormsMutations\\": "layers/Wassup/packages/gravityforms-mutations/src",
+ "PoPSitesWassup\\HighlightMutations\\": "layers/Wassup/packages/highlight-mutations/src",
+ "PoPSitesWassup\\LocationMutations\\": "layers/Wassup/packages/location-mutations/src",
+ "PoPSitesWassup\\LocationPostLinkMutations\\": "layers/Wassup/packages/locationpostlink-mutations/src",
+ "PoPSitesWassup\\LocationPostMutations\\": "layers/Wassup/packages/locationpost-mutations/src",
+ "PoPSitesWassup\\NewsletterMutations\\": "layers/Wassup/packages/newsletter-mutations/src",
+ "PoPSitesWassup\\NotificationMutations\\": "layers/Wassup/packages/notification-mutations/src",
+ "PoPSitesWassup\\PostLinkMutations\\": "layers/Wassup/packages/postlink-mutations/src",
+ "PoPSitesWassup\\PostMutations\\": "layers/Wassup/packages/post-mutations/src",
+ "PoPSitesWassup\\ShareMutations\\": "layers/Wassup/packages/share-mutations/src",
+ "PoPSitesWassup\\SocialNetworkMutations\\": "layers/Wassup/packages/socialnetwork-mutations/src",
+ "PoPSitesWassup\\StanceMutations\\": "layers/Wassup/packages/stance-mutations/src",
+ "PoPSitesWassup\\SystemMutations\\": "layers/Wassup/packages/system-mutations/src",
+ "PoPSitesWassup\\UserStateMutations\\": "layers/Wassup/packages/user-state-mutations/src",
+ "PoPSitesWassup\\VolunteerMutations\\": "layers/Wassup/packages/volunteer-mutations/src",
+ "PoPSitesWassup\\Wassup\\": "layers/Wassup/packages/wassup/src",
+ "PoP\\APIClients\\": "layers/API/packages/api-clients/src",
+ "PoP\\APIEndpointsForWP\\": "layers/API/packages/api-endpoints-for-wp/src",
+ "PoP\\APIEndpoints\\": "layers/API/packages/api-endpoints/src",
+ "PoP\\APIMirrorQuery\\": "layers/API/packages/api-mirrorquery/src",
+ "PoP\\API\\": "layers/API/packages/api/src",
+ "PoP\\AccessControl\\": "layers/Engine/packages/access-control/src",
+ "PoP\\ApplicationWP\\": "layers/SiteBuilder/packages/application-wp/src",
+ "PoP\\Application\\": "layers/SiteBuilder/packages/application/src",
+ "PoP\\Base36Definitions\\": "layers/SiteBuilder/packages/definitions-base36/src",
+ "PoP\\CacheControl\\": "layers/Engine/packages/cache-control/src",
+ "PoP\\ComponentModel\\": "layers/Engine/packages/component-model/src",
+ "PoP\\ConfigurableSchemaFeedback\\": "layers/Engine/packages/configurable-schema-feedback/src",
+ "PoP\\ConfigurationComponentModel\\": "layers/SiteBuilder/packages/component-model-configuration/src",
+ "PoP\\DefinitionPersistence\\": "layers/SiteBuilder/packages/definitionpersistence/src",
+ "PoP\\Definitions\\": "layers/Engine/packages/definitions/src",
+ "PoP\\EmojiDefinitions\\": "layers/SiteBuilder/packages/definitions-emoji/src",
+ "PoP\\EngineWP\\": "layers/Engine/packages/engine-wp/src",
+ "PoP\\Engine\\": "layers/Engine/packages/engine/src",
+ "PoP\\FieldQuery\\": "layers/Engine/packages/field-query/src",
+ "PoP\\FileStore\\": "layers/Engine/packages/filestore/src",
+ "PoP\\FunctionFields\\": "layers/Engine/packages/function-fields/src",
+ "PoP\\GraphQLAPI\\": "layers/API/packages/api-graphql/src",
+ "PoP\\GuzzleHelpers\\": "layers/Engine/packages/guzzle-helpers/src",
+ "PoP\\HooksWP\\": "layers/Engine/packages/hooks-wp/src",
+ "PoP\\Hooks\\": "layers/Engine/packages/hooks/src",
+ "PoP\\LooseContracts\\": "layers/Engine/packages/loosecontracts/src",
+ "PoP\\MandatoryDirectivesByConfiguration\\": "layers/Engine/packages/mandatory-directives-by-configuration/src",
+ "PoP\\ModuleRouting\\": "layers/Engine/packages/modulerouting/src",
+ "PoP\\Multisite\\": "layers/SiteBuilder/packages/multisite/src",
+ "PoP\\PoP\\": "src",
+ "PoP\\QueryParsing\\": "layers/Engine/packages/query-parsing/src",
+ "PoP\\RESTAPI\\": "layers/API/packages/api-rest/src",
+ "PoP\\ResourceLoader\\": "layers/SiteBuilder/packages/resourceloader/src",
+ "PoP\\Resources\\": "layers/SiteBuilder/packages/resources/src",
+ "PoP\\Root\\": "layers/Engine/packages/root/src",
+ "PoP\\RoutingWP\\": "layers/Engine/packages/routing-wp/src",
+ "PoP\\Routing\\": "layers/Engine/packages/routing/src",
+ "PoP\\SPA\\": "layers/SiteBuilder/packages/spa/src",
+ "PoP\\SSG\\": "layers/SiteBuilder/packages/static-site-generator/src",
+ "PoP\\SiteWP\\": "layers/SiteBuilder/packages/site-wp/src",
+ "PoP\\Site\\": "layers/SiteBuilder/packages/site/src",
+ "PoP\\TraceTools\\": "layers/Engine/packages/trace-tools/src",
+ "PoP\\TranslationWP\\": "layers/Engine/packages/translation-wp/src",
+ "PoP\\Translation\\": "layers/Engine/packages/translation/src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "GraphQLAPI\\ConvertCaseDirectives\\": "layers/GraphQLAPIForWP/plugins/convert-case-directives/tests",
+ "GraphQLAPI\\GraphQLAPI\\": "layers/GraphQLAPIForWP/plugins/graphql-api-for-wp/tests",
+ "GraphQLAPI\\SchemaFeedback\\": "layers/GraphQLAPIForWP/plugins/schema-feedback/tests",
+ "GraphQLByPoP\\GraphQLClientsForWP\\": "layers/GraphQLByPoP/packages/graphql-clients-for-wp/tests",
+ "GraphQLByPoP\\GraphQLEndpointForWP\\": "layers/GraphQLByPoP/packages/graphql-endpoint-for-wp/tests",
+ "GraphQLByPoP\\GraphQLParser\\": "layers/GraphQLByPoP/packages/graphql-parser/tests",
+ "GraphQLByPoP\\GraphQLQuery\\": "layers/GraphQLByPoP/packages/graphql-query/tests",
+ "GraphQLByPoP\\GraphQLRequest\\": "layers/GraphQLByPoP/packages/graphql-request/tests",
+ "GraphQLByPoP\\GraphQLServer\\": "layers/GraphQLByPoP/packages/graphql-server/tests",
+ "Leoloso\\ExamplesForPoP\\": "layers/Misc/packages/examples-for-pop/tests",
+ "PoPSchema\\BasicDirectives\\": "layers/Schema/packages/basic-directives/tests",
+ "PoPSchema\\BlockMetadataWP\\": "layers/Schema/packages/block-metadata-for-wp/tests",
+ "PoPSchema\\CDNDirective\\": "layers/Schema/packages/cdn-directive/tests",
+ "PoPSchema\\CategoriesWP\\": "layers/Schema/packages/categories-wp/tests",
+ "PoPSchema\\Categories\\": "layers/Schema/packages/categories/tests",
+ "PoPSchema\\CommentMetaWP\\": "layers/Schema/packages/commentmeta-wp/tests",
+ "PoPSchema\\CommentMeta\\": "layers/Schema/packages/commentmeta/tests",
+ "PoPSchema\\CommentMutationsWP\\": "layers/Schema/packages/comment-mutations-wp/tests",
+ "PoPSchema\\CommentMutations\\": "layers/Schema/packages/comment-mutations/tests",
+ "PoPSchema\\CommentsWP\\": "layers/Schema/packages/comments-wp/tests",
+ "PoPSchema\\Comments\\": "layers/Schema/packages/comments/tests",
+ "PoPSchema\\ConvertCaseDirectives\\": "layers/Schema/packages/convert-case-directives/tests",
+ "PoPSchema\\CustomPostMediaMutationsWP\\": "layers/Schema/packages/custompostmedia-mutations-wp/tests",
+ "PoPSchema\\CustomPostMediaMutations\\": "layers/Schema/packages/custompostmedia-mutations/tests",
+ "PoPSchema\\CustomPostMediaWP\\": "layers/Schema/packages/custompostmedia-wp/tests",
+ "PoPSchema\\CustomPostMedia\\": "layers/Schema/packages/custompostmedia/tests",
+ "PoPSchema\\CustomPostMetaWP\\": "layers/Schema/packages/custompostmeta-wp/tests",
+ "PoPSchema\\CustomPostMeta\\": "layers/Schema/packages/custompostmeta/tests",
+ "PoPSchema\\CustomPostMutationsWP\\": "layers/Schema/packages/custompost-mutations-wp/tests",
+ "PoPSchema\\CustomPostMutations\\": "layers/Schema/packages/custompost-mutations/tests",
+ "PoPSchema\\CustomPostsWP\\": "layers/Schema/packages/customposts-wp/tests",
+ "PoPSchema\\CustomPosts\\": "layers/Schema/packages/customposts/tests",
+ "PoPSchema\\EventMutationsWPEM\\": "layers/Schema/packages/event-mutations-wp-em/tests",
+ "PoPSchema\\EventMutations\\": "layers/Schema/packages/event-mutations/tests",
+ "PoPSchema\\EventsWPEM\\": "layers/Schema/packages/events-wp-em/tests",
+ "PoPSchema\\Events\\": "layers/Schema/packages/events/tests",
+ "PoPSchema\\EverythingElseWP\\": "layers/Schema/packages/everythingelse-wp/tests",
+ "PoPSchema\\EverythingElse\\": "layers/Schema/packages/everythingelse/tests",
+ "PoPSchema\\GenericCustomPosts\\": "layers/Schema/packages/generic-customposts/tests",
+ "PoPSchema\\GoogleTranslateDirectiveForCustomPosts\\": "layers/Schema/packages/google-translate-directive-for-customposts/tests",
+ "PoPSchema\\GoogleTranslateDirective\\": "layers/Schema/packages/google-translate-directive/tests",
+ "PoPSchema\\HighlightsWP\\": "layers/Schema/packages/highlights-wp/tests",
+ "PoPSchema\\Highlights\\": "layers/Schema/packages/highlights/tests",
+ "PoPSchema\\LocationPostsWP\\": "layers/Schema/packages/locationposts-wp/tests",
+ "PoPSchema\\LocationPosts\\": "layers/Schema/packages/locationposts/tests",
+ "PoPSchema\\LocationsWPEM\\": "layers/Schema/packages/locations-wp-em/tests",
+ "PoPSchema\\Locations\\": "layers/Schema/packages/locations/tests",
+ "PoPSchema\\MediaWP\\": "layers/Schema/packages/media-wp/tests",
+ "PoPSchema\\Media\\": "layers/Schema/packages/media/tests",
+ "PoPSchema\\MenusWP\\": "layers/Schema/packages/menus-wp/tests",
+ "PoPSchema\\Menus\\": "layers/Schema/packages/menus/tests",
+ "PoPSchema\\MetaQueryWP\\": "layers/Schema/packages/metaquery-wp/tests",
+ "PoPSchema\\MetaQuery\\": "layers/Schema/packages/metaquery/tests",
+ "PoPSchema\\Meta\\": "layers/Schema/packages/meta/tests",
+ "PoPSchema\\NotificationsWP\\": "layers/Schema/packages/notifications-wp/tests",
+ "PoPSchema\\Notifications\\": "layers/Schema/packages/notifications/tests",
+ "PoPSchema\\PagesWP\\": "layers/Schema/packages/pages-wp/tests",
+ "PoPSchema\\Pages\\": "layers/Schema/packages/pages/tests",
+ "PoPSchema\\PostMutations\\": "layers/Schema/packages/post-mutations/tests",
+ "PoPSchema\\PostTagsWP\\": "layers/Schema/packages/post-tags-wp/tests",
+ "PoPSchema\\PostTags\\": "layers/Schema/packages/post-tags/tests",
+ "PoPSchema\\PostsWP\\": "layers/Schema/packages/posts-wp/tests",
+ "PoPSchema\\Posts\\": "layers/Schema/packages/posts/tests",
+ "PoPSchema\\QueriedObjectWP\\": "layers/Schema/packages/queriedobject-wp/tests",
+ "PoPSchema\\QueriedObject\\": "layers/Schema/packages/queriedobject/tests",
+ "PoPSchema\\SchemaCommons\\": "layers/Schema/packages/schema-commons/tests",
+ "PoPSchema\\StancesWP\\": "layers/Schema/packages/stances-wp/tests",
+ "PoPSchema\\Stances\\": "layers/Schema/packages/stances/tests",
+ "PoPSchema\\TagsWP\\": "layers/Schema/packages/tags-wp/tests",
+ "PoPSchema\\Tags\\": "layers/Schema/packages/tags/tests",
+ "PoPSchema\\TaxonomiesWP\\": "layers/Schema/packages/taxonomies-wp/tests",
+ "PoPSchema\\Taxonomies\\": "layers/Schema/packages/taxonomies/tests",
+ "PoPSchema\\TaxonomyMetaWP\\": "layers/Schema/packages/taxonomymeta-wp/tests",
+ "PoPSchema\\TaxonomyMeta\\": "layers/Schema/packages/taxonomymeta/tests",
+ "PoPSchema\\TaxonomyQueryWP\\": "layers/Schema/packages/taxonomyquery-wp/tests",
+ "PoPSchema\\TaxonomyQuery\\": "layers/Schema/packages/taxonomyquery/tests",
+ "PoPSchema\\TranslateDirectiveACL\\": "layers/Schema/packages/translate-directive-acl/tests",
+ "PoPSchema\\TranslateDirective\\": "layers/Schema/packages/translate-directive/tests",
+ "PoPSchema\\UserMetaWP\\": "layers/Schema/packages/usermeta-wp/tests",
+ "PoPSchema\\UserMeta\\": "layers/Schema/packages/usermeta/tests",
+ "PoPSchema\\UserRolesACL\\": "layers/Schema/packages/user-roles-acl/tests",
+ "PoPSchema\\UserRolesAccessControl\\": "layers/Schema/packages/user-roles-access-control/tests",
+ "PoPSchema\\UserRolesWP\\": "layers/Schema/packages/user-roles-wp/tests",
+ "PoPSchema\\UserRoles\\": "layers/Schema/packages/user-roles/tests",
+ "PoPSchema\\UserStateAccessControl\\": "layers/Schema/packages/user-state-access-control/tests",
+ "PoPSchema\\UserStateMutationsWP\\": "layers/Schema/packages/user-state-mutations-wp/tests",
+ "PoPSchema\\UserStateMutations\\": "layers/Schema/packages/user-state-mutations/tests",
+ "PoPSchema\\UserStateWP\\": "layers/Schema/packages/user-state-wp/tests",
+ "PoPSchema\\UserState\\": "layers/Schema/packages/user-state/tests",
+ "PoPSchema\\UsersWP\\": "layers/Schema/packages/users-wp/tests",
+ "PoPSchema\\Users\\": "layers/Schema/packages/users/tests",
+ "PoPSitesWassup\\CommentMutations\\": "layers/Wassup/packages/comment-mutations/tests",
+ "PoPSitesWassup\\ContactUsMutations\\": "layers/Wassup/packages/contactus-mutations/tests",
+ "PoPSitesWassup\\ContactUserMutations\\": "layers/Wassup/packages/contactuser-mutations/tests",
+ "PoPSitesWassup\\CustomPostLinkMutations\\": "layers/Wassup/packages/custompostlink-mutations/tests",
+ "PoPSitesWassup\\CustomPostMutations\\": "layers/Wassup/packages/custompost-mutations/tests",
+ "PoPSitesWassup\\EventLinkMutations\\": "layers/Wassup/packages/eventlink-mutations/tests",
+ "PoPSitesWassup\\EventMutations\\": "layers/Wassup/packages/event-mutations/tests",
+ "PoPSitesWassup\\EverythingElseMutations\\": "layers/Wassup/packages/everythingelse-mutations/tests",
+ "PoPSitesWassup\\FlagMutations\\": "layers/Wassup/packages/flag-mutations/tests",
+ "PoPSitesWassup\\FormMutations\\": "layers/Wassup/packages/form-mutations/tests",
+ "PoPSitesWassup\\GravityFormsMutations\\": "layers/Wassup/packages/gravityforms-mutations/tests",
+ "PoPSitesWassup\\HighlightMutations\\": "layers/Wassup/packages/highlight-mutations/tests",
+ "PoPSitesWassup\\LocationMutations\\": "layers/Wassup/packages/location-mutations/tests",
+ "PoPSitesWassup\\LocationPostLinkMutations\\": "layers/Wassup/packages/locationpostlink-mutations/tests",
+ "PoPSitesWassup\\LocationPostMutations\\": "layers/Wassup/packages/locationpost-mutations/tests",
+ "PoPSitesWassup\\NewsletterMutations\\": "layers/Wassup/packages/newsletter-mutations/tests",
+ "PoPSitesWassup\\NotificationMutations\\": "layers/Wassup/packages/notification-mutations/tests",
+ "PoPSitesWassup\\PostLinkMutations\\": "layers/Wassup/packages/postlink-mutations/tests",
+ "PoPSitesWassup\\PostMutations\\": "layers/Wassup/packages/post-mutations/tests",
+ "PoPSitesWassup\\ShareMutations\\": "layers/Wassup/packages/share-mutations/tests",
+ "PoPSitesWassup\\SocialNetworkMutations\\": "layers/Wassup/packages/socialnetwork-mutations/tests",
+ "PoPSitesWassup\\StanceMutations\\": "layers/Wassup/packages/stance-mutations/tests",
+ "PoPSitesWassup\\SystemMutations\\": "layers/Wassup/packages/system-mutations/tests",
+ "PoPSitesWassup\\UserStateMutations\\": "layers/Wassup/packages/user-state-mutations/tests",
+ "PoPSitesWassup\\VolunteerMutations\\": "layers/Wassup/packages/volunteer-mutations/tests",
+ "PoPSitesWassup\\Wassup\\": "layers/Wassup/packages/wassup/tests",
+ "PoP\\APIClients\\": "layers/API/packages/api-clients/tests",
+ "PoP\\APIEndpointsForWP\\": "layers/API/packages/api-endpoints-for-wp/tests",
+ "PoP\\APIEndpoints\\": "layers/API/packages/api-endpoints/tests",
+ "PoP\\APIMirrorQuery\\": "layers/API/packages/api-mirrorquery/tests",
+ "PoP\\API\\": "layers/API/packages/api/tests",
+ "PoP\\AccessControl\\": "layers/Engine/packages/access-control/tests",
+ "PoP\\ApplicationWP\\": "layers/SiteBuilder/packages/application-wp/tests",
+ "PoP\\Application\\": "layers/SiteBuilder/packages/application/tests",
+ "PoP\\Base36Definitions\\": "layers/SiteBuilder/packages/definitions-base36/tests",
+ "PoP\\CacheControl\\": "layers/Engine/packages/cache-control/tests",
+ "PoP\\ComponentModel\\": "layers/Engine/packages/component-model/tests",
+ "PoP\\ConfigurableSchemaFeedback\\": "layers/Engine/packages/configurable-schema-feedback/tests",
+ "PoP\\ConfigurationComponentModel\\": "layers/SiteBuilder/packages/component-model-configuration/tests",
+ "PoP\\DefinitionPersistence\\": "layers/SiteBuilder/packages/definitionpersistence/tests",
+ "PoP\\Definitions\\": "layers/Engine/packages/definitions/tests",
+ "PoP\\EmojiDefinitions\\": "layers/SiteBuilder/packages/definitions-emoji/tests",
+ "PoP\\EngineWP\\": "layers/Engine/packages/engine-wp/tests",
+ "PoP\\Engine\\": "layers/Engine/packages/engine/tests",
+ "PoP\\FieldQuery\\": "layers/Engine/packages/field-query/tests",
+ "PoP\\FileStore\\": "layers/Engine/packages/filestore/tests",
+ "PoP\\FunctionFields\\": "layers/Engine/packages/function-fields/tests",
+ "PoP\\GraphQLAPI\\": "layers/API/packages/api-graphql/tests",
+ "PoP\\GuzzleHelpers\\": "layers/Engine/packages/guzzle-helpers/tests",
+ "PoP\\HooksWP\\": "layers/Engine/packages/hooks-wp/tests",
+ "PoP\\Hooks\\": "layers/Engine/packages/hooks/tests",
+ "PoP\\LooseContracts\\": "layers/Engine/packages/loosecontracts/tests",
+ "PoP\\MandatoryDirectivesByConfiguration\\": "layers/Engine/packages/mandatory-directives-by-configuration/tests",
+ "PoP\\ModuleRouting\\": "layers/Engine/packages/modulerouting/tests",
+ "PoP\\Multisite\\": "layers/SiteBuilder/packages/multisite/tests",
+ "PoP\\QueryParsing\\": "layers/Engine/packages/query-parsing/tests",
+ "PoP\\RESTAPI\\": "layers/API/packages/api-rest/tests",
+ "PoP\\ResourceLoader\\": "layers/SiteBuilder/packages/resourceloader/tests",
+ "PoP\\Resources\\": "layers/SiteBuilder/packages/resources/tests",
+ "PoP\\Root\\": "layers/Engine/packages/root/tests",
+ "PoP\\RoutingWP\\": "layers/Engine/packages/routing-wp/tests",
+ "PoP\\Routing\\": "layers/Engine/packages/routing/tests",
+ "PoP\\SPA\\": "layers/SiteBuilder/packages/spa/tests",
+ "PoP\\SSG\\": "layers/SiteBuilder/packages/static-site-generator/tests",
+ "PoP\\SiteWP\\": "layers/SiteBuilder/packages/site-wp/tests",
+ "PoP\\Site\\": "layers/SiteBuilder/packages/site/tests",
+ "PoP\\TraceTools\\": "layers/Engine/packages/trace-tools/tests",
+ "PoP\\TranslationWP\\": "layers/Engine/packages/translation-wp/tests",
+ "PoP\\Translation\\": "layers/Engine/packages/translation/tests"
+ }
+ },
+ "extra": {
+ "wordpress-install-dir": "vendor/wordpress/wordpress",
+ "merge-plugin": {
+ "include": [
+ "composer.local.json"
+ ],
+ "recurse": true,
+ "replace": false,
+ "ignore-duplicates": false,
+ "merge-dev": true,
+ "merge-extra": false,
+ "merge-extra-deep": false,
+ "merge-scripts": false
+ }
+ },
+ "replace": {
+ "getpop/access-control": "self.version",
+ "getpop/api": "self.version",
+ "getpop/api-clients": "self.version",
+ "getpop/api-endpoints": "self.version",
+ "getpop/api-endpoints-for-wp": "self.version",
+ "getpop/api-graphql": "self.version",
+ "getpop/api-mirrorquery": "self.version",
+ "getpop/api-rest": "self.version",
+ "getpop/application": "self.version",
+ "getpop/application-wp": "self.version",
+ "getpop/cache-control": "self.version",
+ "getpop/component-model": "self.version",
+ "getpop/component-model-configuration": "self.version",
+ "getpop/configurable-schema-feedback": "self.version",
+ "getpop/definitionpersistence": "self.version",
+ "getpop/definitions": "self.version",
+ "getpop/definitions-base36": "self.version",
+ "getpop/definitions-emoji": "self.version",
+ "getpop/engine": "self.version",
+ "getpop/engine-wp": "self.version",
+ "getpop/engine-wp-bootloader": "self.version",
+ "getpop/field-query": "self.version",
+ "getpop/filestore": "self.version",
+ "getpop/function-fields": "self.version",
+ "getpop/guzzle-helpers": "self.version",
+ "getpop/hooks": "self.version",
+ "getpop/hooks-wp": "self.version",
+ "getpop/loosecontracts": "self.version",
+ "getpop/mandatory-directives-by-configuration": "self.version",
+ "getpop/migrate-api": "self.version",
+ "getpop/migrate-api-graphql": "self.version",
+ "getpop/migrate-component-model": "self.version",
+ "getpop/migrate-component-model-configuration": "self.version",
+ "getpop/migrate-engine": "self.version",
+ "getpop/migrate-engine-wp": "self.version",
+ "getpop/migrate-static-site-generator": "self.version",
+ "getpop/modulerouting": "self.version",
+ "getpop/multisite": "self.version",
+ "getpop/query-parsing": "self.version",
+ "getpop/resourceloader": "self.version",
+ "getpop/resources": "self.version",
+ "getpop/root": "self.version",
+ "getpop/routing": "self.version",
+ "getpop/routing-wp": "self.version",
+ "getpop/site": "self.version",
+ "getpop/site-wp": "self.version",
+ "getpop/spa": "self.version",
+ "getpop/static-site-generator": "self.version",
+ "getpop/trace-tools": "self.version",
+ "getpop/translation": "self.version",
+ "getpop/translation-wp": "self.version",
+ "graphql-api/convert-case-directives": "self.version",
+ "graphql-api/graphql-api-for-wp": "self.version",
+ "graphql-api/schema-feedback": "self.version",
+ "graphql-by-pop/graphql-clients-for-wp": "self.version",
+ "graphql-by-pop/graphql-endpoint-for-wp": "self.version",
+ "graphql-by-pop/graphql-parser": "self.version",
+ "graphql-by-pop/graphql-query": "self.version",
+ "graphql-by-pop/graphql-request": "self.version",
+ "graphql-by-pop/graphql-server": "self.version",
+ "leoloso/examples-for-pop": "self.version",
+ "pop-migrate-everythingelse/cssconverter": "self.version",
+ "pop-migrate-everythingelse/ssr": "self.version",
+ "pop-schema/basic-directives": "self.version",
+ "pop-schema/block-metadata-for-wp": "self.version",
+ "pop-schema/categories": "self.version",
+ "pop-schema/categories-wp": "self.version",
+ "pop-schema/cdn-directive": "self.version",
+ "pop-schema/comment-mutations": "self.version",
+ "pop-schema/comment-mutations-wp": "self.version",
+ "pop-schema/commentmeta": "self.version",
+ "pop-schema/commentmeta-wp": "self.version",
+ "pop-schema/comments": "self.version",
+ "pop-schema/comments-wp": "self.version",
+ "pop-schema/convert-case-directives": "self.version",
+ "pop-schema/custompost-mutations": "self.version",
+ "pop-schema/custompost-mutations-wp": "self.version",
+ "pop-schema/custompostmedia": "self.version",
+ "pop-schema/custompostmedia-mutations": "self.version",
+ "pop-schema/custompostmedia-mutations-wp": "self.version",
+ "pop-schema/custompostmedia-wp": "self.version",
+ "pop-schema/custompostmeta": "self.version",
+ "pop-schema/custompostmeta-wp": "self.version",
+ "pop-schema/customposts": "self.version",
+ "pop-schema/customposts-wp": "self.version",
+ "pop-schema/event-mutations": "self.version",
+ "pop-schema/event-mutations-wp-em": "self.version",
+ "pop-schema/events": "self.version",
+ "pop-schema/events-wp-em": "self.version",
+ "pop-schema/everythingelse": "self.version",
+ "pop-schema/everythingelse-wp": "self.version",
+ "pop-schema/generic-customposts": "self.version",
+ "pop-schema/google-translate-directive": "self.version",
+ "pop-schema/google-translate-directive-for-customposts": "self.version",
+ "pop-schema/highlights": "self.version",
+ "pop-schema/highlights-wp": "self.version",
+ "pop-schema/locationposts": "self.version",
+ "pop-schema/locationposts-wp": "self.version",
+ "pop-schema/locations": "self.version",
+ "pop-schema/locations-wp-em": "self.version",
+ "pop-schema/media": "self.version",
+ "pop-schema/media-wp": "self.version",
+ "pop-schema/menus": "self.version",
+ "pop-schema/menus-wp": "self.version",
+ "pop-schema/meta": "self.version",
+ "pop-schema/metaquery": "self.version",
+ "pop-schema/metaquery-wp": "self.version",
+ "pop-schema/migrate-categories": "self.version",
+ "pop-schema/migrate-categories-wp": "self.version",
+ "pop-schema/migrate-commentmeta": "self.version",
+ "pop-schema/migrate-commentmeta-wp": "self.version",
+ "pop-schema/migrate-comments": "self.version",
+ "pop-schema/migrate-comments-wp": "self.version",
+ "pop-schema/migrate-custompostmedia": "self.version",
+ "pop-schema/migrate-custompostmedia-wp": "self.version",
+ "pop-schema/migrate-custompostmeta": "self.version",
+ "pop-schema/migrate-custompostmeta-wp": "self.version",
+ "pop-schema/migrate-customposts": "self.version",
+ "pop-schema/migrate-customposts-wp": "self.version",
+ "pop-schema/migrate-events": "self.version",
+ "pop-schema/migrate-events-wp-em": "self.version",
+ "pop-schema/migrate-everythingelse": "self.version",
+ "pop-schema/migrate-locations": "self.version",
+ "pop-schema/migrate-locations-wp-em": "self.version",
+ "pop-schema/migrate-media": "self.version",
+ "pop-schema/migrate-media-wp": "self.version",
+ "pop-schema/migrate-meta": "self.version",
+ "pop-schema/migrate-metaquery": "self.version",
+ "pop-schema/migrate-metaquery-wp": "self.version",
+ "pop-schema/migrate-pages": "self.version",
+ "pop-schema/migrate-pages-wp": "self.version",
+ "pop-schema/migrate-post-tags": "self.version",
+ "pop-schema/migrate-post-tags-wp": "self.version",
+ "pop-schema/migrate-posts": "self.version",
+ "pop-schema/migrate-posts-wp": "self.version",
+ "pop-schema/migrate-queriedobject": "self.version",
+ "pop-schema/migrate-queriedobject-wp": "self.version",
+ "pop-schema/migrate-tags": "self.version",
+ "pop-schema/migrate-tags-wp": "self.version",
+ "pop-schema/migrate-taxonomies": "self.version",
+ "pop-schema/migrate-taxonomies-wp": "self.version",
+ "pop-schema/migrate-taxonomymeta": "self.version",
+ "pop-schema/migrate-taxonomymeta-wp": "self.version",
+ "pop-schema/migrate-taxonomyquery": "self.version",
+ "pop-schema/migrate-taxonomyquery-wp": "self.version",
+ "pop-schema/migrate-usermeta": "self.version",
+ "pop-schema/migrate-usermeta-wp": "self.version",
+ "pop-schema/migrate-users": "self.version",
+ "pop-schema/migrate-users-wp": "self.version",
+ "pop-schema/notifications": "self.version",
+ "pop-schema/notifications-wp": "self.version",
+ "pop-schema/pages": "self.version",
+ "pop-schema/pages-wp": "self.version",
+ "pop-schema/post-mutations": "self.version",
+ "pop-schema/post-tags": "self.version",
+ "pop-schema/post-tags-wp": "self.version",
+ "pop-schema/posts": "self.version",
+ "pop-schema/posts-wp": "self.version",
+ "pop-schema/queriedobject": "self.version",
+ "pop-schema/queriedobject-wp": "self.version",
+ "pop-schema/schema-commons": "self.version",
+ "pop-schema/stances": "self.version",
+ "pop-schema/stances-wp": "self.version",
+ "pop-schema/tags": "self.version",
+ "pop-schema/tags-wp": "self.version",
+ "pop-schema/taxonomies": "self.version",
+ "pop-schema/taxonomies-wp": "self.version",
+ "pop-schema/taxonomymeta": "self.version",
+ "pop-schema/taxonomymeta-wp": "self.version",
+ "pop-schema/taxonomyquery": "self.version",
+ "pop-schema/taxonomyquery-wp": "self.version",
+ "pop-schema/translate-directive": "self.version",
+ "pop-schema/translate-directive-acl": "self.version",
+ "pop-schema/user-roles": "self.version",
+ "pop-schema/user-roles-access-control": "self.version",
+ "pop-schema/user-roles-acl": "self.version",
+ "pop-schema/user-roles-wp": "self.version",
+ "pop-schema/user-state": "self.version",
+ "pop-schema/user-state-access-control": "self.version",
+ "pop-schema/user-state-mutations": "self.version",
+ "pop-schema/user-state-mutations-wp": "self.version",
+ "pop-schema/user-state-wp": "self.version",
+ "pop-schema/usermeta": "self.version",
+ "pop-schema/usermeta-wp": "self.version",
+ "pop-schema/users": "self.version",
+ "pop-schema/users-wp": "self.version",
+ "pop-sites-wassup/comment-mutations": "self.version",
+ "pop-sites-wassup/contactus-mutations": "self.version",
+ "pop-sites-wassup/contactuser-mutations": "self.version",
+ "pop-sites-wassup/custompost-mutations": "self.version",
+ "pop-sites-wassup/custompostlink-mutations": "self.version",
+ "pop-sites-wassup/event-mutations": "self.version",
+ "pop-sites-wassup/eventlink-mutations": "self.version",
+ "pop-sites-wassup/everythingelse-mutations": "self.version",
+ "pop-sites-wassup/flag-mutations": "self.version",
+ "pop-sites-wassup/form-mutations": "self.version",
+ "pop-sites-wassup/gravityforms-mutations": "self.version",
+ "pop-sites-wassup/highlight-mutations": "self.version",
+ "pop-sites-wassup/location-mutations": "self.version",
+ "pop-sites-wassup/locationpost-mutations": "self.version",
+ "pop-sites-wassup/locationpostlink-mutations": "self.version",
+ "pop-sites-wassup/newsletter-mutations": "self.version",
+ "pop-sites-wassup/notification-mutations": "self.version",
+ "pop-sites-wassup/post-mutations": "self.version",
+ "pop-sites-wassup/postlink-mutations": "self.version",
+ "pop-sites-wassup/share-mutations": "self.version",
+ "pop-sites-wassup/socialnetwork-mutations": "self.version",
+ "pop-sites-wassup/stance-mutations": "self.version",
+ "pop-sites-wassup/system-mutations": "self.version",
+ "pop-sites-wassup/user-state-mutations": "self.version",
+ "pop-sites-wassup/volunteer-mutations": "self.version",
+ "pop-sites-wassup/wassup": "self.version"
+ },
+ "authors": [
+ {
+ "name": "Leonardo Losoviz",
+ "email": "leo@getpop.org",
+ "homepage": "https://getpop.org"
+ }
+ ],
+ "description": "Monorepo for all the PoP packages",
+ "license": "GPL-2.0-or-later",
+ "config": {
+ "sort-packages": true,
+ "platform-check": false
+ },
+ "repositories": [
+ {
+ "type": "composer",
+ "url": "https://wpackagist.org"
+ },
+ {
+ "type": "vcs",
+ "url": "https://github.com/leoloso/wp-muplugin-loader.git"
+ },
+ {
+ "type": "vcs",
+ "url": "https://github.com/mcaskill/composer-merge-plugin.git"
+ }
+ ],
+ "scripts": {
+ "test": "phpunit",
+ "check-style": "phpcs -n src $(monorepo-builder source-packages --subfolder=src --subfolder=tests)",
+ "fix-style": "phpcbf -n src $(monorepo-builder source-packages --subfolder=src --subfolder=tests)",
+ "analyse": "ci/phpstan.sh \". $(monorepo-builder source-packages --skip-unmigrated)\"",
+ "preview-src-downgrade": "rector process $(monorepo-builder source-packages --subfolder=src) --config=rector-downgrade-code.php --ansi --dry-run || true",
+ "preview-vendor-downgrade": "layers/Engine/packages/root/ci/downgrade_code.sh 7.1 rector-downgrade-code.php --dry-run || true",
+ "preview-code-downgrade": [
+ "@preview-src-downgrade",
+ "@preview-vendor-downgrade"
+ ],
+ "build-server": [
+ "lando init --source remote --remote-url https://wordpress.org/latest.tar.gz --recipe wordpress --webroot wordpress --name graphql-api-dev",
+ "@start-server"
+ ],
+ "start-server": [
+ "cd layers/GraphQLAPIForWP/plugins/graphql-api-for-wp && composer install",
+ "lando start"
+ ],
+ "rebuild-server": "lando rebuild -y",
+ "merge-monorepo": "monorepo-builder merge --ansi",
+ "propagate-monorepo": "monorepo-builder propagate --ansi",
+ "validate-monorepo": "monorepo-builder validate --ansi",
+ "release": "monorepo-builder release patch --ansi"
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
+"#,
+ manipulator.get_contents()
+ );
}