diff --git a/docs/design-docs/playground-cli-workflow.md b/docs/design-docs/playground-cli-workflow.md
index 4a4e17710d..07a2c4e246 100644
--- a/docs/design-docs/playground-cli-workflow.md
+++ b/docs/design-docs/playground-cli-workflow.md
@@ -64,7 +64,7 @@ graph TB
RunCLI --> SetupMode{Setup Mode?}
SetupMode --> |Yes| RunBlueprint["Command run-blueprint
Installs WP if needed
Runs blueprint steps
Process exits on completion"]
- SetupMode --> |No| StartServer["Command server
skipWordPressSetup true
Keeps process running"]
+ SetupMode --> |No| StartServer["Command server
wordpressInstallMode: install-from-existing-files-if-needed
Keeps process running"]
RunBlueprint --> MountDirs["Mount Directories
wordpress to site path
internal studio mu-plugins
internal shared mu-plugins"]
@@ -102,7 +102,7 @@ graph TB
StartProcess --> ForkChild["Fork utility process
playground-server-process-child ts"]
- ForkChild --> RunServer["runCLI with server command
skipWordPressSetup true
port assigned port
mount paths"]
+ ForkChild --> RunServer["runCLI with server command
wordpressInstallMode: install-from-existing-files-if-needed
port assigned port
mount paths"]
RunServer --> WaitReady[Wait for ready message]
diff --git a/package-lock.json b/package-lock.json
index 80b8eea02a..92a4424cba 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,9 +15,9 @@
"@formatjs/intl-locale": "^3.4.5",
"@formatjs/intl-localematcher": "^0.5.4",
"@inquirer/prompts": "^7.10.1",
- "@php-wasm/node": "^3.0.19",
- "@php-wasm/scopes": "^3.0.19",
- "@php-wasm/universal": "^3.0.19",
+ "@php-wasm/node": "^3.0.21",
+ "@php-wasm/scopes": "^3.0.21",
+ "@php-wasm/universal": "^3.0.21",
"@reduxjs/toolkit": "^2.7.0",
"@rive-app/react-canvas": "^4.12.0",
"@sentry/electron": "^6.5.0",
@@ -27,9 +27,9 @@
"@wordpress/dataviews": "^10.2.0",
"@wordpress/i18n": "^6.1.0",
"@wordpress/icons": "^11.1.0",
- "@wp-playground/blueprints": "^3.0.19",
- "@wp-playground/cli": "^3.0.19",
- "@wp-playground/wordpress": "^3.0.14",
+ "@wp-playground/blueprints": "^3.0.21",
+ "@wp-playground/cli": "^3.0.21",
+ "@wp-playground/wordpress": "^3.0.21",
"archiver": "^6.0.1",
"atomically": "^2.0.3",
"cli-table3": "^0.6.5",
@@ -2356,10 +2356,12 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
- "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
- "license": "MIT",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
+ "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
"engines": {
"node": ">=6.9.0"
}
@@ -7690,15 +7692,15 @@
}
},
"node_modules/@php-wasm/fs-journal": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/fs-journal/-/fs-journal-3.0.19.tgz",
- "integrity": "sha512-xws2CbKwnkupdZb1L6pYbIjku9lIKlvxv+mMwt6l/wwzI+IFLRVhuqIn84GDPtU9mzDN7GLkDuwcfxz2StTJvg==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/fs-journal/-/fs-journal-3.0.21.tgz",
+ "integrity": "sha512-8obzJX2U6VNAi0cmLyo5sdW8+QElVo/onGoWP2WqPr9+7xkbN4UVADclSz/mlI7yq7fsS/gmDfwJry4LLujbnw==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
"express": "4.21.2",
"ini": "4.1.2",
"wasm-feature-detect": "1.8.0",
@@ -7723,12 +7725,12 @@
}
},
"node_modules/@php-wasm/logger": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/logger/-/logger-3.0.19.tgz",
- "integrity": "sha512-Nqg4bFdfdDkgwKUjSQSekpZYHFL7B5B8B+C0g1nTbOP4qj0A1v26Nek/1cK26EFV2nKEo6Fp4wtLdkh6FU2hMg==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/logger/-/logger-3.0.21.tgz",
+ "integrity": "sha512-KYyIH/MCXsRfQWMRGkcnzDRJPj/hDWafqHXDrZBVnhO49kj0gWvenR7Rk6Hvm5fhk8aRIrgVzL6+pAIe0JO5Ew==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/node-polyfills": "3.0.19"
+ "@php-wasm/node-polyfills": "3.0.21"
},
"engines": {
"node": ">=20.18.3",
@@ -7739,16 +7741,16 @@
}
},
"node_modules/@php-wasm/node": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/node/-/node-3.0.19.tgz",
- "integrity": "sha512-FUsaN4GQ2Lqw4UG4iujjDpEjv/BFADtDZEk2+xFrACrvU5sOxjsKER9SDh5MYiqTmIDAGcR2Y+VgSDaF0gK80Q==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/node/-/node-3.0.21.tgz",
+ "integrity": "sha512-ezJh98m8uy+O2Yq2N/Uny4Y9VU5OdM/uYD1/F0KPzptKvu/4FrmcH3oEqjgL0R8PuSXrjS6Zc6l/jQD82fkfvA==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node-polyfills": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
- "@wp-playground/common": "3.0.19",
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node-polyfills": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
+ "@wp-playground/common": "3.0.21",
"express": "4.21.2",
"ini": "4.1.2",
"wasm-feature-detect": "1.8.0",
@@ -7764,9 +7766,9 @@
}
},
"node_modules/@php-wasm/node-polyfills": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/node-polyfills/-/node-polyfills-3.0.19.tgz",
- "integrity": "sha512-PjxNzoLHOEotLpm8PQNWpbCiK8wedWuy57b1IwaJgzgeNFYJ5YZjgyB3tooiT0B+YrSHULSGk0N4fblnlu4V0w==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/node-polyfills/-/node-polyfills-3.0.21.tgz",
+ "integrity": "sha512-5CwoWlJVJ8is30OjMPaqW2aIK7P80jyMxqveS8yNmP0Yni+LPiCvf+b6rtH8R5LfVsS17ma6E6Lfd48oL4WIGw==",
"license": "GPL-2.0-or-later",
"optionalDependencies": {
"fs-ext": "2.1.1"
@@ -7780,11 +7782,15 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/@php-wasm/scopes": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/scopes/-/scopes-3.0.19.tgz",
- "integrity": "sha512-wInSI4Tj4V8zqCiwXtDsZkJJMcnsZBZIP4d5mxnsn0zHlXzoD0BkZhxgOxJpHCqPS4dhF8Us/ZX8yQ+9JUntDA==",
+ "node_modules/@php-wasm/progress": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/progress/-/progress-3.0.21.tgz",
+ "integrity": "sha512-df4RQBQQfUt63RIiipJBmDbEz6fQYX9ExVQVKmU7FU7x7ZPjVidH8Sq+iaZA4tXIbEwHExZ65KA9YvEzVdobPg==",
"license": "GPL-2.0-or-later",
+ "dependencies": {
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node-polyfills": "3.0.21"
+ },
"engines": {
"node": ">=20.18.3",
"npm": ">=10.1.0"
@@ -7793,48 +7799,44 @@
"fs-ext": "2.1.1"
}
},
- "node_modules/@php-wasm/stream-compression": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/stream-compression/-/stream-compression-3.0.19.tgz",
- "integrity": "sha512-lLEztQzRZvuh0e4xMe+ybTr5/4ZDyK61Gx30uOgcu9ai4NU0BmE/VoY7i6HHOytW8qELYVgg58PosK4bAN/GgQ==",
+ "node_modules/@php-wasm/scopes": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/scopes/-/scopes-3.0.21.tgz",
+ "integrity": "sha512-aWqvYM+0zwO6httFNOhR4Bf7hAY4fONVBjt1SLYhKrgq5maplUwMv3R2fcGfz/2oQuEtAnWZGvfX3gmDLTGTpg==",
"license": "GPL-2.0-or-later",
- "dependencies": {
- "@php-wasm/node-polyfills": "3.0.19",
- "@php-wasm/util": "3.0.19"
+ "engines": {
+ "node": ">=20.18.3",
+ "npm": ">=10.1.0"
},
"optionalDependencies": {
"fs-ext": "2.1.1"
}
},
- "node_modules/@php-wasm/universal": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/universal/-/universal-3.0.19.tgz",
- "integrity": "sha512-sItcRHWgESSwBrCQ8uPy/emetl+YBxiGzLkp7kp9TXJWLxQq2wJRmsMha8wU08pIyDDjCIgjWYtPKQ3pFee96g==",
+ "node_modules/@php-wasm/stream-compression": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/stream-compression/-/stream-compression-3.0.21.tgz",
+ "integrity": "sha512-/e8rXYBZSocfj/d0jxySa5STvwLDz5yAftdAGR286q2kqAH34PGYSr8bc5cB24vBTBoj0iAHg9WyX2uEwJTEeg==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node-polyfills": "3.0.19",
- "@php-wasm/progress": "3.0.19",
- "@php-wasm/stream-compression": "3.0.19",
- "@php-wasm/util": "3.0.19",
- "ini": "4.1.2"
- },
- "engines": {
- "node": ">=20.18.3",
- "npm": ">=10.1.0"
+ "@php-wasm/node-polyfills": "3.0.21",
+ "@php-wasm/util": "3.0.21"
},
"optionalDependencies": {
"fs-ext": "2.1.1"
}
},
- "node_modules/@php-wasm/universal/node_modules/@php-wasm/progress": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/progress/-/progress-3.0.19.tgz",
- "integrity": "sha512-GicMUvA6g7z2ArNwM9Bc6eFox0Mfi6vmCexKCv0Dq4xpFuuc7wC/JdBz6bC2w4RW15ICl/C3ARRFTdRmnKHR9g==",
+ "node_modules/@php-wasm/universal": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/universal/-/universal-3.0.21.tgz",
+ "integrity": "sha512-RSsLaP0BEdyQ7A/PYhC5sOSIKzwzKTYiHDSZbwnGSUdzmizOY5bUvukDDAGI+Aw4UYSKpvd/0MT3b62nBnM3oA==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node-polyfills": "3.0.19"
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node-polyfills": "3.0.21",
+ "@php-wasm/progress": "3.0.21",
+ "@php-wasm/stream-compression": "3.0.21",
+ "@php-wasm/util": "3.0.21",
+ "ini": "4.1.2"
},
"engines": {
"node": ">=20.18.3",
@@ -7854,9 +7856,9 @@
}
},
"node_modules/@php-wasm/util": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/util/-/util-3.0.19.tgz",
- "integrity": "sha512-5kOs76glzDuyUlyamq4Kg10X74igJp8UKS8tUqA/4IW3WPwRETIV8QiIO4+52rPVkxdkN2EqclQffmVb/3khiA==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/util/-/util-3.0.21.tgz",
+ "integrity": "sha512-OPen901Trj16rwo4KXZwxGqNXNRfR9dOi1xJrex+hB6rTUYP8ACGqSIEUct0Bb4vlI785nLFcVLBnLTWgvNtaA==",
"engines": {
"node": ">=20.18.3",
"npm": ">=10.1.0"
@@ -7866,16 +7868,16 @@
}
},
"node_modules/@php-wasm/web": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/web/-/web-3.0.19.tgz",
- "integrity": "sha512-GTUelZSUNy8oUh4/zJld9Bx5d5a4tTU8aaa3a2ovwnCnWUawYMfV+JOEE69eiKChJGVDmiVHfbKep6ZEe2gAhQ==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/web/-/web-3.0.21.tgz",
+ "integrity": "sha512-zQvFzvFvwbnYv+QYSWoxF3sTbbdIfpDClrtDtoObhRGq0rtVTSTqnsMEwxQx0+ATt1IuVP2RtFAKtWWRA2mWDg==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/fs-journal": "3.0.19",
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
- "@php-wasm/web-service-worker": "3.0.19",
+ "@php-wasm/fs-journal": "3.0.21",
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
+ "@php-wasm/web-service-worker": "3.0.21",
"express": "4.21.2",
"ini": "4.1.2",
"wasm-feature-detect": "1.8.0",
@@ -7891,12 +7893,12 @@
}
},
"node_modules/@php-wasm/web-service-worker": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/web-service-worker/-/web-service-worker-3.0.19.tgz",
- "integrity": "sha512-+8wlbScquDeXK8aRBe/pF//L//kDttsh5i2ChNkS1iPbS3t0buJHKcby0Wnr2kvfw54zhomWVaDuxKuKLIYNTQ==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/web-service-worker/-/web-service-worker-3.0.21.tgz",
+ "integrity": "sha512-BndQYgmRLtemK6IW6rtItYKSxG67bWAMi0L0SmTH8ISzxYDtCZjvBaT44BXbCMWklDi9Ol7sx8WUyIg8Lx+Zdg==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/scopes": "3.0.19"
+ "@php-wasm/scopes": "3.0.21"
},
"engines": {
"node": ">=20.18.3",
@@ -7916,15 +7918,15 @@
}
},
"node_modules/@php-wasm/xdebug-bridge": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/xdebug-bridge/-/xdebug-bridge-3.0.19.tgz",
- "integrity": "sha512-fj/im+eBf0W1udTDkjeOpFp3BG1CMYPKu8VmYR8VAiphDf4y6j8Bg3PAGROc72gwUyAGsgMgSVmzV2+DP2ewIQ==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@php-wasm/xdebug-bridge/-/xdebug-bridge-3.0.21.tgz",
+ "integrity": "sha512-Ivi1saHPa4oDdjObm+KX9XBfJIS0Raatc0OJv2I8Dau8zmIH/TfZqzQOwz2Z4Gb2xJG8gxEo5wYFnLOzN4caSw==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@wp-playground/common": "3.0.19",
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@wp-playground/common": "3.0.21",
"express": "4.21.2",
"ini": "4.1.2",
"wasm-feature-detect": "1.8.0",
@@ -7975,13 +7977,13 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.56.1",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz",
- "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz",
+ "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.56.1"
+ "playwright": "1.52.0"
},
"bin": {
"playwright": "cli.js"
@@ -10971,10 +10973,9 @@
}
},
"node_modules/@wordpress/components/node_modules/path-to-regexp": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
- "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
- "license": "MIT"
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+ "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
},
"node_modules/@wordpress/components/node_modules/uuid": {
"version": "9.0.1",
@@ -11171,9 +11172,9 @@
}
},
"node_modules/@wordpress/hooks": {
- "version": "4.35.0",
- "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.35.0.tgz",
- "integrity": "sha512-PQcAv/zfMYn5sPScOWDu1vgYkyHaDFt7+1IHvwR0RGE0AdQrdnKjvm6VJ4ALugA+zvJZkBZxLk5Gm+NZGAWIMg==",
+ "version": "4.34.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.34.0.tgz",
+ "integrity": "sha512-uZcgAMDhf6OzYCUoDqq//wYsfC7yx+XUd2av07aROn8SKTkWRfu7zweJHsOBmK0TkCx976ELoL/SZZfHPcj3aw==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -11181,9 +11182,9 @@
}
},
"node_modules/@wordpress/html-entities": {
- "version": "4.35.0",
- "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.35.0.tgz",
- "integrity": "sha512-43K8viPNNWUxmCKfKN2Dx/TgJitbGeGCfWBj0aloRoeqOUeEuDkWoak+XiIrJKpwYHTYhqtePl7COMWPzwkqbw==",
+ "version": "4.34.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.34.0.tgz",
+ "integrity": "sha512-TYYNhGbHEAuVH48Q5+Muy1Bc1G32yK+4btLhkiQOtRXfa/p7f+3bUMe1/t3wgdmU1hM//wS6dsJ2wvXa9rBCeA==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -11225,9 +11226,9 @@
}
},
"node_modules/@wordpress/is-shallow-equal": {
- "version": "5.35.0",
- "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.35.0.tgz",
- "integrity": "sha512-ooM/QFzxu8Ueqsv0D/z0+X6grbVws3GFMSxdM12eZO1B0/x6JPAtq4msZkoxqeQ4zoR0ghYHFXzv3k+Ch1tsFw==",
+ "version": "5.34.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.34.0.tgz",
+ "integrity": "sha512-p401k9SahwMOlmQq9DsKnfpHbax6QtE1hB6qTS/1VfhKLYy/DHc43OKafrwGB5G+rHntrsBNsO9r63DRcl4bbQ==",
"license": "GPL-2.0-or-later",
"engines": {
"node": ">=18.12.0",
@@ -11304,9 +11305,9 @@
}
},
"node_modules/@wordpress/redux-routine": {
- "version": "5.35.0",
- "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-5.35.0.tgz",
- "integrity": "sha512-qc3MLyPWzpujvrP1wVg3xCAuZF+BItGSIIOikMk6xLN63FlNRxjh88gZ65evjU47Ik5KOjYqx3bt/GFdmzJOxw==",
+ "version": "5.34.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-5.34.0.tgz",
+ "integrity": "sha512-OYODJsho0wwCGrzEutelzBQpWHDS0quwJPGqx4TIWgoBnQtObcPyeqXDMGDJXfAFYP1KT3iE7hsU280EASxpng==",
"license": "GPL-2.0-or-later",
"dependencies": {
"is-plain-object": "^5.0.0",
@@ -11347,12 +11348,12 @@
}
},
"node_modules/@wordpress/undo-manager": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.35.0.tgz",
- "integrity": "sha512-WyJWGLhLvkB2FF/o+QmgAoPo3NTEi5HQDwYbSEpw1pUZm7W3U/QwcaW6cWW3D/9OUtnHY4kfMGxrI5del2tYyA==",
+ "version": "1.34.0",
+ "resolved": "https://registry.npmjs.org/@wordpress/undo-manager/-/undo-manager-1.34.0.tgz",
+ "integrity": "sha512-NQ/LGpaFoEYCKA0Uyg7RO04wx1MF27Jdv2S2tS81sFUO2/L0FJKyW1AQptx7SGEMIxgH9Sn4XIOdsQmLE4nGww==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@wordpress/is-shallow-equal": "^5.35.0"
+ "@wordpress/is-shallow-equal": "^5.34.0"
},
"engines": {
"node": ">=18.12.0",
@@ -11383,21 +11384,21 @@
}
},
"node_modules/@wp-playground/blueprints": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@wp-playground/blueprints/-/blueprints-3.0.19.tgz",
- "integrity": "sha512-BhoFm2d5w+OOURMZ0MgtbTTFhV+YgGkBFtCZhfckOEKxYsX//LRE7l7Wso6Q0XlMxHDw87Ypc2Dwf5wEz87fSQ==",
- "dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node": "3.0.19",
- "@php-wasm/node-polyfills": "3.0.19",
- "@php-wasm/progress": "3.0.19",
- "@php-wasm/stream-compression": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
- "@php-wasm/web": "3.0.19",
- "@wp-playground/common": "3.0.19",
- "@wp-playground/storage": "3.0.19",
- "@wp-playground/wordpress": "3.0.19",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@wp-playground/blueprints/-/blueprints-3.0.21.tgz",
+ "integrity": "sha512-MoDqob0Fx0SQferWqPk0SCOay1yFDtWnkbkO5HDtkr4pcK1DxfK3s/PE6WArNQhtyfKKQXd4n1R7faeg/zzSjQ==",
+ "dependencies": {
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node": "3.0.21",
+ "@php-wasm/node-polyfills": "3.0.21",
+ "@php-wasm/progress": "3.0.21",
+ "@php-wasm/stream-compression": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
+ "@php-wasm/web": "3.0.21",
+ "@wp-playground/common": "3.0.21",
+ "@wp-playground/storage": "3.0.21",
+ "@wp-playground/wordpress": "3.0.21",
"@zip.js/zip.js": "2.7.57",
"ajv": "8.12.0",
"async-lock": "1.4.1",
@@ -11426,23 +11427,6 @@
"fs-ext": "2.1.1"
}
},
- "node_modules/@wp-playground/blueprints/node_modules/@php-wasm/progress": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/progress/-/progress-3.0.19.tgz",
- "integrity": "sha512-GicMUvA6g7z2ArNwM9Bc6eFox0Mfi6vmCexKCv0Dq4xpFuuc7wC/JdBz6bC2w4RW15ICl/C3ARRFTdRmnKHR9g==",
- "license": "GPL-2.0-or-later",
- "dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node-polyfills": "3.0.19"
- },
- "engines": {
- "node": ">=20.18.3",
- "npm": ">=10.1.0"
- },
- "optionalDependencies": {
- "fs-ext": "2.1.1"
- }
- },
"node_modules/@wp-playground/blueprints/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
@@ -11480,21 +11464,21 @@
"integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw=="
},
"node_modules/@wp-playground/cli": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@wp-playground/cli/-/cli-3.0.19.tgz",
- "integrity": "sha512-rKtlH2kkWHGRU0UM5kq2Wg4XHFfnYVlDvzvc+Jec0TVX9M5M1AhUIT/+GVOxmgNKL1arAotR7hDej08gwyQtoA==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@wp-playground/cli/-/cli-3.0.21.tgz",
+ "integrity": "sha512-CXb56gAd6rfpEMOoVhoUsxuvcMZEeB0iZp1izpv/QB2MD5h8LB/3YtO2P/zq+Z9NqTE1WAaj99e/EZ+fSFyvag==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node": "3.0.19",
- "@php-wasm/progress": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
- "@php-wasm/xdebug-bridge": "3.0.19",
- "@wp-playground/blueprints": "3.0.19",
- "@wp-playground/common": "3.0.19",
- "@wp-playground/storage": "3.0.19",
- "@wp-playground/wordpress": "3.0.19",
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node": "3.0.21",
+ "@php-wasm/progress": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
+ "@php-wasm/xdebug-bridge": "3.0.21",
+ "@wp-playground/blueprints": "3.0.21",
+ "@wp-playground/common": "3.0.21",
+ "@wp-playground/storage": "3.0.21",
+ "@wp-playground/wordpress": "3.0.21",
"@zip.js/zip.js": "2.7.57",
"ajv": "8.12.0",
"async-lock": "1.4.1",
@@ -11528,23 +11512,6 @@
"fs-ext": "2.1.1"
}
},
- "node_modules/@wp-playground/cli/node_modules/@php-wasm/progress": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@php-wasm/progress/-/progress-3.0.19.tgz",
- "integrity": "sha512-GicMUvA6g7z2ArNwM9Bc6eFox0Mfi6vmCexKCv0Dq4xpFuuc7wC/JdBz6bC2w4RW15ICl/C3ARRFTdRmnKHR9g==",
- "license": "GPL-2.0-or-later",
- "dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node-polyfills": "3.0.19"
- },
- "engines": {
- "node": ">=20.18.3",
- "npm": ">=10.1.0"
- },
- "optionalDependencies": {
- "fs-ext": "2.1.1"
- }
- },
"node_modules/@wp-playground/cli/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
@@ -11583,13 +11550,13 @@
"license": "(MIT AND Zlib)"
},
"node_modules/@wp-playground/common": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@wp-playground/common/-/common-3.0.19.tgz",
- "integrity": "sha512-Xtn8baSHTvK4YzQoLReKrvZZs2yGXAzaVqAOZS93FtBXEJ9OIIgQg5egpv6mf7KZxHqlULtA08/sLNpuVMgzew==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@wp-playground/common/-/common-3.0.21.tgz",
+ "integrity": "sha512-/07vi+SLDLtEOCSIxA6TzAIFdsFCHd4Gn/VGbERoWtMbN5txUPiNjOhi/Vz8IZEVCU38VUR5G9DO/z77XEMPaw==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
"ini": "4.1.2"
},
"engines": {
@@ -11610,15 +11577,15 @@
}
},
"node_modules/@wp-playground/storage": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@wp-playground/storage/-/storage-3.0.19.tgz",
- "integrity": "sha512-lxdeXzzXzSIcwaqVsg5R33OVqVCBjB1hVhQNep8Xs9RB0GKidc56nKwJNh4OIoaZIRwzgNTn+FLfyZnExrR+gA==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@wp-playground/storage/-/storage-3.0.21.tgz",
+ "integrity": "sha512-h4gge8pM4r7l9n8buy8GEz8LOa6DCsJGPirgUQISE/cz+rJloAh8Tvvijx2eA1AXJ+mEzeA1Ry26EQV6QE0uGA==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/stream-compression": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
- "@php-wasm/web": "3.0.19",
+ "@php-wasm/stream-compression": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
+ "@php-wasm/web": "3.0.21",
"@zip.js/zip.js": "2.7.57",
"async-lock": "^1.4.1",
"clean-git-ref": "^2.0.1",
@@ -11667,16 +11634,16 @@
}
},
"node_modules/@wp-playground/wordpress": {
- "version": "3.0.19",
- "resolved": "https://registry.npmjs.org/@wp-playground/wordpress/-/wordpress-3.0.19.tgz",
- "integrity": "sha512-dtA1PuVHUyMX3kNV/ZVZA0wrM/7hbr3z8xch0TD1bl73iuf1wRIc74hDlvDJYmAgEU4zjmD4DYTPdJmNjqPiUg==",
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/@wp-playground/wordpress/-/wordpress-3.0.21.tgz",
+ "integrity": "sha512-zcSlnxZFYCUYJfZzqUIhqwRdTSWikxjG8yQeLFKKYTluHxvhE1xyLjvhtM/8huzsmRoD2tCDSwoeAddOQw7FuA==",
"license": "GPL-2.0-or-later",
"dependencies": {
- "@php-wasm/logger": "3.0.19",
- "@php-wasm/node": "3.0.19",
- "@php-wasm/universal": "3.0.19",
- "@php-wasm/util": "3.0.19",
- "@wp-playground/common": "3.0.19",
+ "@php-wasm/logger": "3.0.21",
+ "@php-wasm/node": "3.0.21",
+ "@php-wasm/universal": "3.0.21",
+ "@php-wasm/util": "3.0.21",
+ "@wp-playground/common": "3.0.21",
"express": "4.21.2",
"ini": "4.1.2",
"wasm-feature-detect": "1.8.0",
@@ -23839,13 +23806,13 @@
}
},
"node_modules/playwright": {
- "version": "1.56.1",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz",
- "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz",
+ "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.56.1"
+ "playwright-core": "1.52.0"
},
"bin": {
"playwright": "cli.js"
@@ -23858,9 +23825,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.56.1",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz",
- "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz",
+ "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -24890,6 +24857,11 @@
"node": ">=4"
}
},
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
"node_modules/regexp.prototype.flags": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
@@ -28923,6 +28895,15 @@
"wp-error": "^1.3.0"
}
},
+ "node_modules/wpcom-xhr-request/node_modules/@babel/runtime": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+ "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
diff --git a/package.json b/package.json
index f8da32ce8f..a339c4434f 100644
--- a/package.json
+++ b/package.json
@@ -120,9 +120,9 @@
"@formatjs/intl-locale": "^3.4.5",
"@formatjs/intl-localematcher": "^0.5.4",
"@inquirer/prompts": "^7.10.1",
- "@php-wasm/node": "^3.0.19",
- "@php-wasm/scopes": "^3.0.19",
- "@php-wasm/universal": "^3.0.19",
+ "@php-wasm/node": "^3.0.21",
+ "@php-wasm/scopes": "^3.0.21",
+ "@php-wasm/universal": "^3.0.21",
"@reduxjs/toolkit": "^2.7.0",
"@rive-app/react-canvas": "^4.12.0",
"@sentry/electron": "^6.5.0",
@@ -132,9 +132,9 @@
"@wordpress/dataviews": "^10.2.0",
"@wordpress/i18n": "^6.1.0",
"@wordpress/icons": "^11.1.0",
- "@wp-playground/blueprints": "^3.0.19",
- "@wp-playground/cli": "^3.0.19",
- "@wp-playground/wordpress": "^3.0.14",
+ "@wp-playground/blueprints": "^3.0.21",
+ "@wp-playground/cli": "^3.0.21",
+ "@wp-playground/wordpress": "^3.0.21",
"archiver": "^6.0.1",
"atomically": "^2.0.3",
"cli-table3": "^0.6.5",
diff --git a/patches/@wp-playground+wordpress+3.0.19.patch b/patches/@wp-playground+wordpress+3.0.19.patch
deleted file mode 100644
index dda2645c7b..0000000000
--- a/patches/@wp-playground+wordpress+3.0.19.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/node_modules/@wp-playground/wordpress/index.cjs b/node_modules/@wp-playground/wordpress/index.cjs
-index ccbb71a..2d9ce09 100644
---- a/node_modules/@wp-playground/wordpress/index.cjs
-+++ b/node_modules/@wp-playground/wordpress/index.cjs
-@@ -352,7 +352,7 @@ function skip_whitespace($tokens) {
- ob_clean();
- echo false === $return_value ? '0' : '1';
- ob_end_flush();
-- `})).text!=="1")throw new Error("Failed to rewrite constants in wp-config.php.")}async function h(e,t){const n=o.joinPaths(t,"wp-config.php"),i={DB_NAME:"wordpress"};!e.fileExists(n)&&e.fileExists(o.joinPaths(t,"wp-config-sample.php"))&&await e.writeFile(n,await e.readFileAsBuffer(o.joinPaths(t,"wp-config-sample.php"))),await _(e,n,i,"skip")}async function v(e){const t=await w(e);return await g(t,e),t}async function g(e,t){var i,r;const n=await e.getPrimaryPhp();if((i=t.hooks)!=null&&i.beforeWordPressFiles&&await t.hooks.beforeWordPressFiles(n),t.wordPressZip&&await E(n,await t.wordPressZip),t.constants)for(const a in t.constants)n.defineConstant(a,t.constants[a]);if(t.dataSqlPath&&(n.defineConstant("DB_DIR",o.dirname(t.dataSqlPath)),n.defineConstant("DB_FILE",o.basename(t.dataSqlPath))),n.defineConstant("WP_HOME",t.siteUrl),n.defineConstant("WP_SITEURL",t.siteUrl),await h(n,e.documentRoot),(r=t.hooks)!=null&&r.beforeDatabaseSetup&&await t.hooks.beforeDatabaseSetup(n),t.sqliteIntegrationPluginZip&&await k(n,await t.sqliteIntegrationPluginZip),t.wordPressZip&&!t.dataSqlPath&&(await f(n)||await S(n),!await f(n))){if(await L(n))throw new Error("WordPress installation has failed.");if(n.isFile("/internal/shared/preload/0-sqlite.php"))throw new Error("Error connecting to the SQLite database.");if(!t.sqliteIntegrationPluginZip){const l=o.joinPaths(e.documentRoot,"wp-content/mu-plugins/sqlite-database-integration");if(n.isDir(l))throw new Error("Error connecting to the SQLite database.")}throw new Error("Error connecting to the MySQL database.")}return e}async function w(e){const t=e.spawnHandler??d.sandboxedSpawnHandlerFactory;async function n(r,a){const l=await e.createPhpRuntime(a),s=new d.PHP(l);return e.sapiName&&s.setSapiName(e.sapiName),r&&(s.requestHandler=r),e.phpIniEntries&&d.setPhpIniEntries(s,e.phpIniEntries),s.defineConstant("WP_SQLITE_AST_DRIVER",!0),a&&!s.isFile("/internal/.boot-files-written")&&(await y(s),await d.writeFiles(s,"/",e.createFiles||{}),await P(s,o.joinPaths(new URL(e.siteUrl).pathname,"phpinfo.php")),await d.writeFiles(s,"/internal",{".boot-files-written":""})),t&&await s.setSpawnHandler(t(r.processManager)),s.enableRuntimeRotation({recreateRuntime:e.createPhpRuntime,maxRequests:400}),e.onPHPInstanceCreated&&await e.onPHPInstanceCreated(s,{isPrimary:a}),s}const i=new d.PHPRequestHandler({phpFactory:async({isPrimary:r})=>n(i,r),documentRoot:e.documentRoot||"/wordpress",absoluteUrl:e.siteUrl,rewriteRules:b,getFileNotFoundAction:e.getFileNotFoundAction??$,cookieStore:e.cookieStore});return i}async function f(e){return(await e.run({code:`n(i,r),documentRoot:e.documentRoot||"/wordpress",absoluteUrl:e.siteUrl,rewriteRules:b,getFileNotFoundAction:e.getFileNotFoundAction??$,cookieStore:e.cookieStore});return i}async function f(e){return(await e.run({code:`t(i,r),documentRoot:e.documentRoot||"/wordpress",absoluteUrl:e.siteUrl,rewriteRules:k,getFileNotFoundAction:e.getFileNotFoundAction??y,cookieStore:e.cookieStore});return i}async function b(e){return(await e.run({code:`t(i,r),documentRoot:e.documentRoot||"/wordpress",absoluteUrl:e.siteUrl,rewriteRules:k,getFileNotFoundAction:e.getFileNotFoundAction??y,cookieStore:e.cookieStore});return i}async function b(e){return(await e.run({code:`