From 335d85ff1f429838a6000644f39ae1aee35ae62f Mon Sep 17 00:00:00 2001 From: Bero Date: Tue, 23 Jul 2024 08:59:54 +0200 Subject: [PATCH 1/2] Remove puzzle app package --- .../blueprints/public/blueprint-schema.json | 3135 +++++++++-------- packages/playground/puzzle/.eslintrc.json | 18 - packages/playground/puzzle/README.md | 7 - packages/playground/puzzle/index.html | 34 - packages/playground/puzzle/package.json | 6 - packages/playground/puzzle/project.json | 73 - packages/playground/puzzle/public/favicon.ico | Bin 16958 -> 0 bytes packages/playground/puzzle/public/logo192.png | Bin 13885 -> 0 bytes packages/playground/puzzle/public/logo512.png | Bin 33775 -> 0 bytes .../playground/puzzle/public/manifest.json | 25 - packages/playground/puzzle/public/robots.txt | 3 - packages/playground/puzzle/src/App.scss | 57 - packages/playground/puzzle/src/App.tsx | 27 - .../puzzle/src/assets/home-background.png | Bin 137104 -> 0 bytes .../playground/puzzle/src/assets/shape.png | Bin 10986 -> 0 bytes .../src/components/SiteButton/SiteButton.scss | 0 .../src/components/SiteButton/SiteButton.tsx | 51 - .../puzzle/src/components/footer/Footer.scss | 25 - .../puzzle/src/components/footer/Footer.tsx | 19 - .../puzzle/src/components/loader/Loader.scss | 17 - .../puzzle/src/components/loader/Loader.tsx | 33 - .../components/scan-button/ScanButton.scss | 32 - .../src/components/scan-button/ScanButton.tsx | 58 - .../components/scan-overlay/ScanOverlay.scss | 8 - .../components/scan-overlay/ScanOverlay.tsx | 65 - .../src/components/scan-video/ScanVideo.scss | 6 - .../src/components/scan-video/ScanVideo.tsx | 96 - .../playground/puzzle/src/context/scan.ts | 37 - packages/playground/puzzle/src/index.css | 8 - packages/playground/puzzle/src/index.tsx | 12 - packages/playground/puzzle/src/setupTests.js | 5 - .../playground/puzzle/src/site-builder/api.ts | 47 - .../site-builder/blueprints/cookiebot.json | 15 - .../site-builder/blueprints/dynamic-ooo.json | 25 - .../site-builder/blueprints/elementor.json | 15 - .../site-builder/blueprints/fastspring.json | 15 - .../src/site-builder/blueprints/google.json | 25 - .../blueprints/jetformbuilder.json | 15 - .../src/site-builder/blueprints/jetpack.json | 15 - .../src/site-builder/blueprints/omnisend.json | 15 - .../blueprints/personalizewp.json | 15 - .../site-builder/blueprints/siteground.json | 12 - .../blueprints/w3-total-cache.json | 15 - .../src/site-builder/blueprints/yith.json | 43 - .../src/site-builder/blueprints/yoast.json | 20 - .../puzzle/src/site-builder/image.ts | 40 - .../puzzle/src/site-builder/index.ts | 1 - .../puzzle/src/site-builder/processor.ts | 231 -- .../puzzle/src/views/home/Home.scss | 85 - .../playground/puzzle/src/views/home/Home.tsx | 64 - .../puzzle/src/views/scan/Scan.scss | 65 - .../playground/puzzle/src/views/scan/Scan.tsx | 160 - .../puzzle/src/views/site/Site.scss | 5 - .../playground/puzzle/src/views/site/Site.tsx | 62 - packages/playground/puzzle/tsconfig.json | 23 - packages/playground/puzzle/tsconfig.lib.json | 10 - packages/playground/puzzle/tsconfig.spec.json | 19 - packages/playground/puzzle/vite.config.ts | 107 - .../custom-redirects-lib.php | 24 - packages/playground/website/.htaccess | 2 +- packages/playground/website/public/puzzle.php | 250 -- 61 files changed, 1641 insertions(+), 3656 deletions(-) delete mode 100644 packages/playground/puzzle/.eslintrc.json delete mode 100644 packages/playground/puzzle/README.md delete mode 100644 packages/playground/puzzle/index.html delete mode 100644 packages/playground/puzzle/package.json delete mode 100644 packages/playground/puzzle/project.json delete mode 100644 packages/playground/puzzle/public/favicon.ico delete mode 100644 packages/playground/puzzle/public/logo192.png delete mode 100644 packages/playground/puzzle/public/logo512.png delete mode 100644 packages/playground/puzzle/public/manifest.json delete mode 100644 packages/playground/puzzle/public/robots.txt delete mode 100644 packages/playground/puzzle/src/App.scss delete mode 100644 packages/playground/puzzle/src/App.tsx delete mode 100644 packages/playground/puzzle/src/assets/home-background.png delete mode 100644 packages/playground/puzzle/src/assets/shape.png delete mode 100644 packages/playground/puzzle/src/components/SiteButton/SiteButton.scss delete mode 100644 packages/playground/puzzle/src/components/SiteButton/SiteButton.tsx delete mode 100644 packages/playground/puzzle/src/components/footer/Footer.scss delete mode 100644 packages/playground/puzzle/src/components/footer/Footer.tsx delete mode 100644 packages/playground/puzzle/src/components/loader/Loader.scss delete mode 100644 packages/playground/puzzle/src/components/loader/Loader.tsx delete mode 100644 packages/playground/puzzle/src/components/scan-button/ScanButton.scss delete mode 100644 packages/playground/puzzle/src/components/scan-button/ScanButton.tsx delete mode 100644 packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.scss delete mode 100644 packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.tsx delete mode 100644 packages/playground/puzzle/src/components/scan-video/ScanVideo.scss delete mode 100644 packages/playground/puzzle/src/components/scan-video/ScanVideo.tsx delete mode 100644 packages/playground/puzzle/src/context/scan.ts delete mode 100644 packages/playground/puzzle/src/index.css delete mode 100644 packages/playground/puzzle/src/index.tsx delete mode 100644 packages/playground/puzzle/src/setupTests.js delete mode 100644 packages/playground/puzzle/src/site-builder/api.ts delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/cookiebot.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/dynamic-ooo.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/elementor.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/fastspring.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/google.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/jetformbuilder.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/jetpack.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/omnisend.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/personalizewp.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/siteground.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/w3-total-cache.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/yith.json delete mode 100644 packages/playground/puzzle/src/site-builder/blueprints/yoast.json delete mode 100644 packages/playground/puzzle/src/site-builder/image.ts delete mode 100644 packages/playground/puzzle/src/site-builder/index.ts delete mode 100644 packages/playground/puzzle/src/site-builder/processor.ts delete mode 100644 packages/playground/puzzle/src/views/home/Home.scss delete mode 100644 packages/playground/puzzle/src/views/home/Home.tsx delete mode 100644 packages/playground/puzzle/src/views/scan/Scan.scss delete mode 100644 packages/playground/puzzle/src/views/scan/Scan.tsx delete mode 100644 packages/playground/puzzle/src/views/site/Site.scss delete mode 100644 packages/playground/puzzle/src/views/site/Site.tsx delete mode 100644 packages/playground/puzzle/tsconfig.json delete mode 100644 packages/playground/puzzle/tsconfig.lib.json delete mode 100644 packages/playground/puzzle/tsconfig.spec.json delete mode 100644 packages/playground/puzzle/vite.config.ts delete mode 100644 packages/playground/website/public/puzzle.php diff --git a/packages/playground/blueprints/public/blueprint-schema.json b/packages/playground/blueprints/public/blueprint-schema.json index 7f4e15a7ed..368ae31466 100644 --- a/packages/playground/blueprints/public/blueprint-schema.json +++ b/packages/playground/blueprints/public/blueprint-schema.json @@ -1,1496 +1,1641 @@ { - "$schema": "http://json-schema.org/schema", - "$ref": "#/definitions/Blueprint", - "definitions": { - "Blueprint": { - "type": "object", - "properties": { - "landingPage": { - "type": "string", - "description": "The URL to navigate to after the blueprint has been run." - }, - "description": { - "type": "string", - "description": "Optional description. It doesn't do anything but is exposed as a courtesy to developers who may want to document which blueprint file does what.", - "deprecated": "Use meta.description instead." - }, - "meta": { - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "A clear and concise name for your Blueprint." - }, - "description": { - "type": "string", - "description": "A brief explanation of what your Blueprint offers." - }, - "author": { - "type": "string", - "description": "A GitHub username of the author of this Blueprint." - }, - "categories": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Relevant categories to help users find your Blueprint in the future Blueprints section on WordPress.org." - } - }, - "required": ["title", "author"], - "additionalProperties": false, - "description": "Optional metadata. Used by the Blueprints gallery at https://github.com/WordPress/blueprints" - }, - "preferredVersions": { - "type": "object", - "properties": { - "php": { - "anyOf": [ - { - "$ref": "#/definitions/SupportedPHPVersion" - }, - { - "type": "string", - "const": "latest" - } - ], - "description": "The preferred PHP version to use. If not specified, the latest supported version will be used" - }, - "wp": { - "type": "string", - "description": "The preferred WordPress version to use. If not specified, the latest supported version will be used" - } - }, - "required": ["php", "wp"], - "additionalProperties": false, - "description": "The preferred PHP and WordPress versions to use." - }, - "features": { - "type": "object", - "properties": { - "networking": { - "type": "boolean", - "description": "Should boot with support for network request via wp_safe_remote_get?" - } - }, - "additionalProperties": false - }, - "constants": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "PHP Constants to define on every request" - }, - "plugins": { - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/FileReference" - } - ] - }, - "description": "WordPress plugins to install and activate" - }, - "siteOptions": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "properties": { - "blogname": { - "type": "string", - "description": "The site title" - } - }, - "description": "WordPress site options to define" - }, - "login": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "object", - "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" - } - }, - "required": ["username", "password"], - "additionalProperties": false - } - ], - "description": "User to log in as. If true, logs the user in as admin/password." - }, - "phpExtensionBundles": { - "type": "array", - "items": { - "$ref": "#/definitions/SupportedPHPExtensionBundle" - }, - "description": "The PHP extensions to use." - }, - "steps": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/StepDefinition" - }, - { - "type": "string" - }, - { - "not": {} - }, - { - "type": "boolean", - "const": false - }, - { - "type": "null" - } - ] - }, - "description": "The steps to run after every other operation in this Blueprint was executed." - }, - "$schema": { - "type": "string" - } - }, - "additionalProperties": false - }, - "SupportedPHPVersion": { - "type": "string", - "enum": [ - "8.3", - "8.2", - "8.1", - "8.0", - "7.4", - "7.3", - "7.2", - "7.1", - "7.0" - ] - }, - "FileReference": { - "anyOf": [ - { - "$ref": "#/definitions/VFSReference" - }, - { - "$ref": "#/definitions/LiteralReference" - }, - { - "$ref": "#/definitions/CoreThemeReference" - }, - { - "$ref": "#/definitions/CorePluginReference" - }, - { - "$ref": "#/definitions/UrlReference" - } - ] - }, - "VFSReference": { - "type": "object", - "properties": { - "resource": { - "type": "string", - "const": "vfs", - "description": "Identifies the file resource as Virtual File System (VFS)" - }, - "path": { - "type": "string", - "description": "The path to the file in the VFS" - } - }, - "required": ["resource", "path"], - "additionalProperties": false - }, - "LiteralReference": { - "type": "object", - "properties": { - "resource": { - "type": "string", - "const": "literal", - "description": "Identifies the file resource as a literal file" - }, - "name": { - "type": "string", - "description": "The name of the file" - }, - "contents": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "BYTES_PER_ELEMENT": { - "type": "number" - }, - "buffer": { - "type": "object", - "properties": { - "byteLength": { - "type": "number" - } - }, - "required": ["byteLength"], - "additionalProperties": false - }, - "byteLength": { - "type": "number" - }, - "byteOffset": { - "type": "number" - }, - "length": { - "type": "number" - } - }, - "required": [ - "BYTES_PER_ELEMENT", - "buffer", - "byteLength", - "byteOffset", - "length" - ], - "additionalProperties": { - "type": "number" - } - } - ], - "description": "The contents of the file" - } - }, - "required": ["resource", "name", "contents"], - "additionalProperties": false - }, - "CoreThemeReference": { - "type": "object", - "properties": { - "resource": { - "type": "string", - "const": "wordpress.org/themes", - "description": "Identifies the file resource as a WordPress Core theme" - }, - "slug": { - "type": "string", - "description": "The slug of the WordPress Core theme" - } - }, - "required": ["resource", "slug"], - "additionalProperties": false - }, - "CorePluginReference": { - "type": "object", - "properties": { - "resource": { - "type": "string", - "const": "wordpress.org/plugins", - "description": "Identifies the file resource as a WordPress Core plugin" - }, - "slug": { - "type": "string", - "description": "The slug of the WordPress Core plugin" - } - }, - "required": ["resource", "slug"], - "additionalProperties": false - }, - "UrlReference": { - "type": "object", - "properties": { - "resource": { - "type": "string", - "const": "url", - "description": "Identifies the file resource as a URL" - }, - "url": { - "type": "string", - "description": "The URL of the file" - }, - "caption": { - "type": "string", - "description": "Optional caption for displaying a progress message" - } - }, - "required": ["resource", "url"], - "additionalProperties": false - }, - "SupportedPHPExtensionBundle": { - "type": "string", - "enum": ["kitchen-sink", "light"] - }, - "StepDefinition": { - "type": "object", - "discriminator": { - "propertyName": "step" - }, - "required": ["step"], - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "activatePlugin" - }, - "pluginPath": { - "type": "string", - "description": "Path to the plugin directory as absolute path (/wordpress/wp-content/plugins/plugin-name); or the plugin entry file relative to the plugins directory (plugin-name/plugin-name.php)." - }, - "pluginName": { - "type": "string", - "description": "Optional. Plugin name to display in the progress bar." - } - }, - "required": ["pluginPath", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "activateTheme" - }, - "themeFolderName": { - "type": "string", - "description": "The name of the theme folder inside wp-content/themes/" - } - }, - "required": ["step", "themeFolderName"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "cp" - }, - "fromPath": { - "type": "string", - "description": "Source path" - }, - "toPath": { - "type": "string", - "description": "Target path" - } - }, - "required": ["fromPath", "step", "toPath"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "defineWpConfigConsts" - }, - "consts": { - "type": "object", - "additionalProperties": {}, - "description": "The constants to define" - }, - "method": { - "type": "string", - "enum": ["rewrite-wp-config", "define-before-run"], - "description": "The method of defining the constants in wp-config.php. Possible values are:\n\n- rewrite-wp-config: Default. Rewrites the wp-config.php file to explicitly call define() with the requested name and value. This method alters the file on the disk, but it doesn't conflict with existing define() calls in wp-config.php.\n\n- define-before-run: Defines the constant before running the requested script. It doesn't alter any files on the disk, but constants defined this way may conflict with existing define() calls in wp-config.php." - }, - "virtualize": { - "type": "boolean", - "deprecated": "This option is noop and will be removed in a future version.\nThis option is only kept in here to avoid breaking Blueprint schema validation\nfor existing apps using this option." - } - }, - "required": ["consts", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "defineSiteUrl" - }, - "siteUrl": { - "type": "string", - "description": "The URL" - } - }, - "required": ["siteUrl", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "enableMultisite" - } - }, - "required": ["step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "importWxr" - }, - "file": { - "$ref": "#/definitions/FileReference", - "description": "The file to import" - } - }, - "required": ["file", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "importThemeStarterContent", - "description": "The step identifier." - }, - "themeSlug": { - "type": "string", - "description": "The name of the theme to import content from." - } - }, - "required": ["step", "themeSlug"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "importWordPressFiles" - }, - "wordPressFilesZip": { - "$ref": "#/definitions/FileReference", - "description": "The zip file containing the top-level WordPress files and directories." - }, - "pathInZip": { - "type": "string", - "description": "The path inside the zip file where the WordPress files are." - } - }, - "required": ["step", "wordPressFilesZip"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "ifAlreadyInstalled": { - "type": "string", - "enum": ["overwrite", "skip", "error"], - "description": "What to do if the asset already exists." - }, - "step": { - "type": "string", - "const": "installPlugin", - "description": "The step identifier." - }, - "pluginZipFile": { - "$ref": "#/definitions/FileReference", - "description": "The plugin zip file to install." - }, - "options": { - "$ref": "#/definitions/InstallPluginOptions", - "description": "Optional installation options." - } - }, - "required": ["pluginZipFile", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "ifAlreadyInstalled": { - "type": "string", - "enum": ["overwrite", "skip", "error"], - "description": "What to do if the asset already exists." - }, - "step": { - "type": "string", - "const": "installTheme", - "description": "The step identifier." - }, - "themeZipFile": { - "$ref": "#/definitions/FileReference", - "description": "The theme zip file to install." - }, - "options": { - "type": "object", - "properties": { - "activate": { - "type": "boolean", - "description": "Whether to activate the theme after installing it." - }, - "importStarterContent": { - "type": "boolean", - "description": "Whether to import the theme's starter content after installing it." - } - }, - "additionalProperties": false, - "description": "Optional installation options." - } - }, - "required": ["step", "themeZipFile"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "login" - }, - "username": { - "type": "string", - "description": "The user to log in as. Defaults to 'admin'." - }, - "password": { - "type": "string", - "description": "The password to log in with. Defaults to 'password'." - } - }, - "required": ["step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "mkdir" - }, - "path": { - "type": "string", - "description": "The path of the directory you want to create" - } - }, - "required": ["path", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "mv" - }, - "fromPath": { - "type": "string", - "description": "Source path" - }, - "toPath": { - "type": "string", - "description": "Target path" - } - }, - "required": ["fromPath", "step", "toPath"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "resetData" - } - }, - "required": ["step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "request" - }, - "request": { - "$ref": "#/definitions/PHPRequest", - "description": "Request details (See /wordpress-playground/api/universal/interface/PHPRequest)" - } - }, - "required": ["request", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "rm" - }, - "path": { - "type": "string", - "description": "The path to remove" - } - }, - "required": ["path", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "rmdir" - }, - "path": { - "type": "string", - "description": "The path to remove" - } - }, - "required": ["path", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "runPHP", - "description": "The step identifier." - }, - "code": { - "type": "string", - "description": "The PHP code to run." - } - }, - "required": ["code", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "runPHPWithOptions" - }, - "options": { - "$ref": "#/definitions/PHPRunOptions", - "description": "Run options (See /wordpress-playground/api/universal/interface/PHPRunOptions/))" - } - }, - "required": ["options", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "runWpInstallationWizard" - }, - "options": { - "$ref": "#/definitions/WordPressInstallationOptions" - } - }, - "required": ["options", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "runSql", - "description": "The step identifier." - }, - "sql": { - "$ref": "#/definitions/FileReference", - "description": "The SQL to run. Each non-empty line must contain a valid SQL query." - } - }, - "required": ["sql", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "setSiteOptions", - "description": "The name of the step. Must be \"setSiteOptions\"." - }, - "options": { - "type": "object", - "additionalProperties": {}, - "description": "The options to set on the site." - } - }, - "required": ["options", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "unzip" - }, - "zipFile": { - "$ref": "#/definitions/FileReference", - "description": "The zip file to extract" - }, - "zipPath": { - "type": "string", - "description": "The path of the zip file to extract", - "deprecated": "Use zipFile instead." - }, - "extractToPath": { - "type": "string", - "description": "The path to extract the zip file to" - } - }, - "required": ["extractToPath", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "updateUserMeta" - }, - "meta": { - "type": "object", - "additionalProperties": {}, - "description": "An object of user meta values to set, e.g. { \"first_name\": \"John\" }" - }, - "userId": { - "type": "number", - "description": "User ID" - } - }, - "required": ["meta", "step", "userId"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "writeFile" - }, - "path": { - "type": "string", - "description": "The path of the file to write to" - }, - "data": { - "anyOf": [ - { - "$ref": "#/definitions/FileReference" - }, - { - "type": "string" - }, - { - "type": "object", - "properties": { - "BYTES_PER_ELEMENT": { - "type": "number" - }, - "buffer": { - "type": "object", - "properties": { - "byteLength": { - "type": "number" - } - }, - "required": ["byteLength"], - "additionalProperties": false - }, - "byteLength": { - "type": "number" - }, - "byteOffset": { - "type": "number" - }, - "length": { - "type": "number" - } - }, - "required": [ - "BYTES_PER_ELEMENT", - "buffer", - "byteLength", - "byteOffset", - "length" - ], - "additionalProperties": { - "type": "number" - } - } - ], - "description": "The data to write" - } - }, - "required": ["data", "path", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "wp-cli", - "description": "The step identifier." - }, - "command": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ], - "description": "The WP CLI command to run." - }, - "wpCliPath": { - "type": "string", - "description": "wp-cli.phar path" - } - }, - "required": ["command", "step"] - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "progress": { - "type": "object", - "properties": { - "weight": { - "type": "number" - }, - "caption": { - "type": "string" - } - }, - "additionalProperties": false - }, - "step": { - "type": "string", - "const": "setSiteLanguage" - }, - "language": { - "type": "string", - "description": "The language to set, e.g. 'en_US'" - } - }, - "required": ["language", "step"] - } - ] - }, - "InstallPluginOptions": { - "type": "object", - "properties": { - "activate": { - "type": "boolean", - "description": "Whether to activate the plugin after installing it." - } - }, - "additionalProperties": false - }, - "PHPRequest": { - "type": "object", - "properties": { - "method": { - "$ref": "#/definitions/HTTPMethod", - "description": "Request method. Default: `GET`." - }, - "url": { - "type": "string", - "description": "Request path or absolute URL." - }, - "headers": { - "$ref": "#/definitions/PHPRequestHeaders", - "description": "Request headers." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "BYTES_PER_ELEMENT": { - "type": "number" - }, - "buffer": { - "type": "object", - "properties": { - "byteLength": { - "type": "number" - } - }, - "required": ["byteLength"], - "additionalProperties": false - }, - "byteLength": { - "type": "number" - }, - "byteOffset": { - "type": "number" - }, - "length": { - "type": "number" - } - }, - "required": [ - "BYTES_PER_ELEMENT", - "buffer", - "byteLength", - "byteOffset", - "length" - ], - "additionalProperties": { - "type": "number" - } - }, - { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "BYTES_PER_ELEMENT": { - "type": "number" - }, - "buffer": { - "type": "object", - "properties": { - "byteLength": { - "type": "number" - } - }, - "required": ["byteLength"], - "additionalProperties": false - }, - "byteLength": { - "type": "number" - }, - "byteOffset": { - "type": "number" - }, - "length": { - "type": "number" - } - }, - "required": [ - "BYTES_PER_ELEMENT", - "buffer", - "byteLength", - "byteOffset", - "length" - ], - "additionalProperties": { - "type": "number" - } - }, - { - "type": "object", - "properties": { - "size": { - "type": "number" - }, - "type": { - "type": "string" - }, - "lastModified": { - "type": "number" - }, - "name": { - "type": "string" - }, - "webkitRelativePath": { - "type": "string" - } - }, - "required": [ - "lastModified", - "name", - "size", - "type", - "webkitRelativePath" - ], - "additionalProperties": false - } - ] - } - } - ], - "description": "Request body. If an object is given, the request will be encoded as multipart and sent with a `multipart/form-data` header." - } - }, - "required": ["url"], - "additionalProperties": false - }, - "HTTPMethod": { - "type": "string", - "enum": ["GET", "POST", "HEAD", "OPTIONS", "PATCH", "PUT", "DELETE"] - }, - "PHPRequestHeaders": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "PHPRunOptions": { - "type": "object", - "properties": { - "relativeUri": { - "type": "string", - "description": "Request path following the domain:port part." - }, - "scriptPath": { - "type": "string", - "description": "Path of the .php file to execute." - }, - "protocol": { - "type": "string", - "description": "Request protocol." - }, - "method": { - "$ref": "#/definitions/HTTPMethod", - "description": "Request method. Default: `GET`." - }, - "headers": { - "$ref": "#/definitions/PHPRequestHeaders", - "description": "Request headers." - }, - "body": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "BYTES_PER_ELEMENT": { - "type": "number" - }, - "buffer": { - "type": "object", - "properties": { - "byteLength": { - "type": "number" - } - }, - "required": ["byteLength"], - "additionalProperties": false - }, - "byteLength": { - "type": "number" - }, - "byteOffset": { - "type": "number" - }, - "length": { - "type": "number" - } - }, - "required": [ - "BYTES_PER_ELEMENT", - "buffer", - "byteLength", - "byteOffset", - "length" - ], - "additionalProperties": { - "type": "number" - } - } - ], - "description": "Request body." - }, - "env": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Environment variables to set for this run." - }, - "$_SERVER": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "$_SERVER entries to set for this run." - }, - "code": { - "type": "string", - "description": "The code snippet to eval instead of a php file." - } - }, - "additionalProperties": false - }, - "WordPressInstallationOptions": { - "type": "object", - "properties": { - "adminUsername": { - "type": "string" - }, - "adminPassword": { - "type": "string" - } - }, - "additionalProperties": false - } - } -} + "$schema": "http://json-schema.org/schema", + "$ref": "#/definitions/Blueprint", + "definitions": { + "Blueprint": { + "type": "object", + "properties": { + "landingPage": { + "type": "string", + "description": "The URL to navigate to after the blueprint has been run." + }, + "description": { + "type": "string", + "description": "Optional description. It doesn't do anything but is exposed as a courtesy to developers who may want to document which blueprint file does what.", + "deprecated": "Use meta.description instead." + }, + "meta": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "A clear and concise name for your Blueprint." + }, + "description": { + "type": "string", + "description": "A brief explanation of what your Blueprint offers." + }, + "author": { + "type": "string", + "description": "A GitHub username of the author of this Blueprint." + }, + "categories": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Relevant categories to help users find your Blueprint in the future Blueprints section on WordPress.org." + } + }, + "required": [ + "title", + "author" + ], + "additionalProperties": false, + "description": "Optional metadata. Used by the Blueprints gallery at https://github.com/WordPress/blueprints" + }, + "preferredVersions": { + "type": "object", + "properties": { + "php": { + "anyOf": [ + { + "$ref": "#/definitions/SupportedPHPVersion" + }, + { + "type": "string", + "const": "latest" + } + ], + "description": "The preferred PHP version to use. If not specified, the latest supported version will be used" + }, + "wp": { + "type": "string", + "description": "The preferred WordPress version to use. If not specified, the latest supported version will be used" + } + }, + "required": [ + "php", + "wp" + ], + "additionalProperties": false, + "description": "The preferred PHP and WordPress versions to use." + }, + "features": { + "type": "object", + "properties": { + "networking": { + "type": "boolean", + "description": "Should boot with support for network request via wp_safe_remote_get?" + } + }, + "additionalProperties": false + }, + "constants": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "PHP Constants to define on every request" + }, + "plugins": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/FileReference" + } + ] + }, + "description": "WordPress plugins to install and activate" + }, + "siteOptions": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "properties": { + "blogname": { + "type": "string", + "description": "The site title" + } + }, + "description": "WordPress site options to define" + }, + "login": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + } + ], + "description": "User to log in as. If true, logs the user in as admin/password." + }, + "phpExtensionBundles": { + "type": "array", + "items": { + "$ref": "#/definitions/SupportedPHPExtensionBundle" + }, + "description": "The PHP extensions to use." + }, + "steps": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StepDefinition" + }, + { + "type": "string" + }, + { + "not": {} + }, + { + "type": "boolean", + "const": false + }, + { + "type": "null" + } + ] + }, + "description": "The steps to run after every other operation in this Blueprint was executed." + }, + "$schema": { + "type": "string" + } + }, + "additionalProperties": false + }, + "SupportedPHPVersion": { + "type": "string", + "enum": [ + "8.3", + "8.2", + "8.1", + "8.0", + "7.4", + "7.3", + "7.2", + "7.1", + "7.0" + ] + }, + "FileReference": { + "anyOf": [ + { + "$ref": "#/definitions/VFSReference" + }, + { + "$ref": "#/definitions/LiteralReference" + }, + { + "$ref": "#/definitions/CoreThemeReference" + }, + { + "$ref": "#/definitions/CorePluginReference" + }, + { + "$ref": "#/definitions/UrlReference" + } + ] + }, + "VFSReference": { + "type": "object", + "properties": { + "resource": { + "type": "string", + "const": "vfs", + "description": "Identifies the file resource as Virtual File System (VFS)" + }, + "path": { + "type": "string", + "description": "The path to the file in the VFS" + } + }, + "required": [ + "resource", + "path" + ], + "additionalProperties": false + }, + "LiteralReference": { + "type": "object", + "properties": { + "resource": { + "type": "string", + "const": "literal", + "description": "Identifies the file resource as a literal file" + }, + "name": { + "type": "string", + "description": "The name of the file" + }, + "contents": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "BYTES_PER_ELEMENT": { + "type": "number" + }, + "buffer": { + "type": "object", + "properties": { + "byteLength": { + "type": "number" + } + }, + "required": [ + "byteLength" + ], + "additionalProperties": false + }, + "byteLength": { + "type": "number" + }, + "byteOffset": { + "type": "number" + }, + "length": { + "type": "number" + } + }, + "required": [ + "BYTES_PER_ELEMENT", + "buffer", + "byteLength", + "byteOffset", + "length" + ], + "additionalProperties": { + "type": "number" + } + } + ], + "description": "The contents of the file" + } + }, + "required": [ + "resource", + "name", + "contents" + ], + "additionalProperties": false + }, + "CoreThemeReference": { + "type": "object", + "properties": { + "resource": { + "type": "string", + "const": "wordpress.org/themes", + "description": "Identifies the file resource as a WordPress Core theme" + }, + "slug": { + "type": "string", + "description": "The slug of the WordPress Core theme" + } + }, + "required": [ + "resource", + "slug" + ], + "additionalProperties": false + }, + "CorePluginReference": { + "type": "object", + "properties": { + "resource": { + "type": "string", + "const": "wordpress.org/plugins", + "description": "Identifies the file resource as a WordPress Core plugin" + }, + "slug": { + "type": "string", + "description": "The slug of the WordPress Core plugin" + } + }, + "required": [ + "resource", + "slug" + ], + "additionalProperties": false + }, + "UrlReference": { + "type": "object", + "properties": { + "resource": { + "type": "string", + "const": "url", + "description": "Identifies the file resource as a URL" + }, + "url": { + "type": "string", + "description": "The URL of the file" + }, + "caption": { + "type": "string", + "description": "Optional caption for displaying a progress message" + } + }, + "required": [ + "resource", + "url" + ], + "additionalProperties": false + }, + "SupportedPHPExtensionBundle": { + "type": "string", + "enum": [ + "kitchen-sink", + "light" + ] + }, + "StepDefinition": { + "type": "object", + "discriminator": { + "propertyName": "step" + }, + "required": [ + "step" + ], + "oneOf": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "activatePlugin" + }, + "pluginPath": { + "type": "string", + "description": "Path to the plugin directory as absolute path (/wordpress/wp-content/plugins/plugin-name); or the plugin entry file relative to the plugins directory (plugin-name/plugin-name.php)." + }, + "pluginName": { + "type": "string", + "description": "Optional. Plugin name to display in the progress bar." + } + }, + "required": [ + "pluginPath", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "activateTheme" + }, + "themeFolderName": { + "type": "string", + "description": "The name of the theme folder inside wp-content/themes/" + } + }, + "required": [ + "step", + "themeFolderName" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "cp" + }, + "fromPath": { + "type": "string", + "description": "Source path" + }, + "toPath": { + "type": "string", + "description": "Target path" + } + }, + "required": [ + "fromPath", + "step", + "toPath" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "defineWpConfigConsts" + }, + "consts": { + "type": "object", + "additionalProperties": {}, + "description": "The constants to define" + }, + "method": { + "type": "string", + "enum": [ + "rewrite-wp-config", + "define-before-run" + ], + "description": "The method of defining the constants in wp-config.php. Possible values are:\n\n- rewrite-wp-config: Default. Rewrites the wp-config.php file to explicitly call define() with the requested name and value. This method alters the file on the disk, but it doesn't conflict with existing define() calls in wp-config.php.\n\n- define-before-run: Defines the constant before running the requested script. It doesn't alter any files on the disk, but constants defined this way may conflict with existing define() calls in wp-config.php." + }, + "virtualize": { + "type": "boolean", + "deprecated": "This option is noop and will be removed in a future version.\nThis option is only kept in here to avoid breaking Blueprint schema validation\nfor existing apps using this option." + } + }, + "required": [ + "consts", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "defineSiteUrl" + }, + "siteUrl": { + "type": "string", + "description": "The URL" + } + }, + "required": [ + "siteUrl", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "enableMultisite" + } + }, + "required": [ + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "importWxr" + }, + "file": { + "$ref": "#/definitions/FileReference", + "description": "The file to import" + } + }, + "required": [ + "file", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "importThemeStarterContent", + "description": "The step identifier." + }, + "themeSlug": { + "type": "string", + "description": "The name of the theme to import content from." + } + }, + "required": [ + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "importWordPressFiles" + }, + "wordPressFilesZip": { + "$ref": "#/definitions/FileReference", + "description": "The zip file containing the top-level WordPress files and directories." + }, + "pathInZip": { + "type": "string", + "description": "The path inside the zip file where the WordPress files are." + } + }, + "required": [ + "step", + "wordPressFilesZip" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "ifAlreadyInstalled": { + "type": "string", + "enum": [ + "overwrite", + "skip", + "error" + ], + "description": "What to do if the asset already exists." + }, + "step": { + "type": "string", + "const": "installPlugin", + "description": "The step identifier." + }, + "pluginZipFile": { + "$ref": "#/definitions/FileReference", + "description": "The plugin zip file to install." + }, + "options": { + "$ref": "#/definitions/InstallPluginOptions", + "description": "Optional installation options." + } + }, + "required": [ + "pluginZipFile", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "ifAlreadyInstalled": { + "type": "string", + "enum": [ + "overwrite", + "skip", + "error" + ], + "description": "What to do if the asset already exists." + }, + "step": { + "type": "string", + "const": "installTheme", + "description": "The step identifier." + }, + "themeZipFile": { + "$ref": "#/definitions/FileReference", + "description": "The theme zip file to install." + }, + "options": { + "type": "object", + "properties": { + "activate": { + "type": "boolean", + "description": "Whether to activate the theme after installing it." + }, + "importStarterContent": { + "type": "boolean", + "description": "Whether to import the theme's starter content after installing it." + } + }, + "additionalProperties": false, + "description": "Optional installation options." + } + }, + "required": [ + "step", + "themeZipFile" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "login" + }, + "username": { + "type": "string", + "description": "The user to log in as. Defaults to 'admin'." + }, + "password": { + "type": "string", + "description": "The password to log in with. Defaults to 'password'." + } + }, + "required": [ + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "mkdir" + }, + "path": { + "type": "string", + "description": "The path of the directory you want to create" + } + }, + "required": [ + "path", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "mv" + }, + "fromPath": { + "type": "string", + "description": "Source path" + }, + "toPath": { + "type": "string", + "description": "Target path" + } + }, + "required": [ + "fromPath", + "step", + "toPath" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "resetData" + } + }, + "required": [ + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "request" + }, + "request": { + "$ref": "#/definitions/PHPRequest", + "description": "Request details (See /wordpress-playground/api/universal/interface/PHPRequest)" + } + }, + "required": [ + "request", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "rm" + }, + "path": { + "type": "string", + "description": "The path to remove" + } + }, + "required": [ + "path", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "rmdir" + }, + "path": { + "type": "string", + "description": "The path to remove" + } + }, + "required": [ + "path", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "runPHP", + "description": "The step identifier." + }, + "code": { + "type": "string", + "description": "The PHP code to run." + } + }, + "required": [ + "code", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "runPHPWithOptions" + }, + "options": { + "$ref": "#/definitions/PHPRunOptions", + "description": "Run options (See /wordpress-playground/api/universal/interface/PHPRunOptions/))" + } + }, + "required": [ + "options", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "runWpInstallationWizard" + }, + "options": { + "$ref": "#/definitions/WordPressInstallationOptions" + } + }, + "required": [ + "options", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "runSql", + "description": "The step identifier." + }, + "sql": { + "$ref": "#/definitions/FileReference", + "description": "The SQL to run. Each non-empty line must contain a valid SQL query." + } + }, + "required": [ + "sql", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "setSiteOptions", + "description": "The name of the step. Must be \"setSiteOptions\"." + }, + "options": { + "type": "object", + "additionalProperties": {}, + "description": "The options to set on the site." + } + }, + "required": [ + "options", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "unzip" + }, + "zipFile": { + "$ref": "#/definitions/FileReference", + "description": "The zip file to extract" + }, + "zipPath": { + "type": "string", + "description": "The path of the zip file to extract", + "deprecated": "Use zipFile instead." + }, + "extractToPath": { + "type": "string", + "description": "The path to extract the zip file to" + } + }, + "required": [ + "extractToPath", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "updateUserMeta" + }, + "meta": { + "type": "object", + "additionalProperties": {}, + "description": "An object of user meta values to set, e.g. { \"first_name\": \"John\" }" + }, + "userId": { + "type": "number", + "description": "User ID" + } + }, + "required": [ + "meta", + "step", + "userId" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "writeFile" + }, + "path": { + "type": "string", + "description": "The path of the file to write to" + }, + "data": { + "anyOf": [ + { + "$ref": "#/definitions/FileReference" + }, + { + "type": "string" + }, + { + "type": "object", + "properties": { + "BYTES_PER_ELEMENT": { + "type": "number" + }, + "buffer": { + "type": "object", + "properties": { + "byteLength": { + "type": "number" + } + }, + "required": [ + "byteLength" + ], + "additionalProperties": false + }, + "byteLength": { + "type": "number" + }, + "byteOffset": { + "type": "number" + }, + "length": { + "type": "number" + } + }, + "required": [ + "BYTES_PER_ELEMENT", + "buffer", + "byteLength", + "byteOffset", + "length" + ], + "additionalProperties": { + "type": "number" + } + } + ], + "description": "The data to write" + } + }, + "required": [ + "data", + "path", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "wp-cli", + "description": "The step identifier." + }, + "command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "The WP CLI command to run." + }, + "wpCliPath": { + "type": "string", + "description": "wp-cli.phar path" + } + }, + "required": [ + "command", + "step" + ] + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "progress": { + "type": "object", + "properties": { + "weight": { + "type": "number" + }, + "caption": { + "type": "string" + } + }, + "additionalProperties": false + }, + "step": { + "type": "string", + "const": "setSiteLanguage" + }, + "language": { + "type": "string", + "description": "The language to set, e.g. 'en_US'" + } + }, + "required": [ + "language", + "step" + ] + } + ] + }, + "InstallPluginOptions": { + "type": "object", + "properties": { + "activate": { + "type": "boolean", + "description": "Whether to activate the plugin after installing it." + } + }, + "additionalProperties": false + }, + "PHPRequest": { + "type": "object", + "properties": { + "method": { + "$ref": "#/definitions/HTTPMethod", + "description": "Request method. Default: `GET`." + }, + "url": { + "type": "string", + "description": "Request path or absolute URL." + }, + "headers": { + "$ref": "#/definitions/PHPRequestHeaders", + "description": "Request headers." + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "BYTES_PER_ELEMENT": { + "type": "number" + }, + "buffer": { + "type": "object", + "properties": { + "byteLength": { + "type": "number" + } + }, + "required": [ + "byteLength" + ], + "additionalProperties": false + }, + "byteLength": { + "type": "number" + }, + "byteOffset": { + "type": "number" + }, + "length": { + "type": "number" + } + }, + "required": [ + "BYTES_PER_ELEMENT", + "buffer", + "byteLength", + "byteOffset", + "length" + ], + "additionalProperties": { + "type": "number" + } + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "BYTES_PER_ELEMENT": { + "type": "number" + }, + "buffer": { + "type": "object", + "properties": { + "byteLength": { + "type": "number" + } + }, + "required": [ + "byteLength" + ], + "additionalProperties": false + }, + "byteLength": { + "type": "number" + }, + "byteOffset": { + "type": "number" + }, + "length": { + "type": "number" + } + }, + "required": [ + "BYTES_PER_ELEMENT", + "buffer", + "byteLength", + "byteOffset", + "length" + ], + "additionalProperties": { + "type": "number" + } + }, + { + "type": "object", + "properties": { + "size": { + "type": "number" + }, + "type": { + "type": "string" + }, + "lastModified": { + "type": "number" + }, + "name": { + "type": "string" + }, + "webkitRelativePath": { + "type": "string" + } + }, + "required": [ + "lastModified", + "name", + "size", + "type", + "webkitRelativePath" + ], + "additionalProperties": false + } + ] + } + } + ], + "description": "Request body. If an object is given, the request will be encoded as multipart and sent with a `multipart/form-data` header." + } + }, + "required": [ + "url" + ], + "additionalProperties": false + }, + "HTTPMethod": { + "type": "string", + "enum": [ + "GET", + "POST", + "HEAD", + "OPTIONS", + "PATCH", + "PUT", + "DELETE" + ] + }, + "PHPRequestHeaders": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "PHPRunOptions": { + "type": "object", + "properties": { + "relativeUri": { + "type": "string", + "description": "Request path following the domain:port part." + }, + "scriptPath": { + "type": "string", + "description": "Path of the .php file to execute." + }, + "protocol": { + "type": "string", + "description": "Request protocol." + }, + "method": { + "$ref": "#/definitions/HTTPMethod", + "description": "Request method. Default: `GET`." + }, + "headers": { + "$ref": "#/definitions/PHPRequestHeaders", + "description": "Request headers." + }, + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "BYTES_PER_ELEMENT": { + "type": "number" + }, + "buffer": { + "type": "object", + "properties": { + "byteLength": { + "type": "number" + } + }, + "required": [ + "byteLength" + ], + "additionalProperties": false + }, + "byteLength": { + "type": "number" + }, + "byteOffset": { + "type": "number" + }, + "length": { + "type": "number" + } + }, + "required": [ + "BYTES_PER_ELEMENT", + "buffer", + "byteLength", + "byteOffset", + "length" + ], + "additionalProperties": { + "type": "number" + } + } + ], + "description": "Request body." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables to set for this run." + }, + "$_SERVER": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "$_SERVER entries to set for this run." + }, + "code": { + "type": "string", + "description": "The code snippet to eval instead of a php file." + } + }, + "additionalProperties": false + }, + "WordPressInstallationOptions": { + "type": "object", + "properties": { + "adminUsername": { + "type": "string" + }, + "adminPassword": { + "type": "string" + } + }, + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/packages/playground/puzzle/.eslintrc.json b/packages/playground/puzzle/.eslintrc.json deleted file mode 100644 index 79fd7c1d98..0000000000 --- a/packages/playground/puzzle/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/playground/puzzle/README.md b/packages/playground/puzzle/README.md deleted file mode 100644 index cf75bf2d45..0000000000 --- a/packages/playground/puzzle/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Playground Puzzle app - -This app allows users to scan Playground puzzle pieces and generate sites based on the puzzle pieces scanned. - -## Development - -Run `nx dev playground-puzzle` from the root of the repository to start the development server. diff --git a/packages/playground/puzzle/index.html b/packages/playground/puzzle/index.html deleted file mode 100644 index 8e088a1553..0000000000 --- a/packages/playground/puzzle/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - WordPress Playground - - - - - - -
- - - diff --git a/packages/playground/puzzle/package.json b/packages/playground/puzzle/package.json deleted file mode 100644 index f219f428bc..0000000000 --- a/packages/playground/puzzle/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@wp-playground/puzzle", - "version": "0.0.1", - "type": "module", - "private": true -} diff --git a/packages/playground/puzzle/project.json b/packages/playground/puzzle/project.json deleted file mode 100644 index 5e26a1e03b..0000000000 --- a/packages/playground/puzzle/project.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "playground-puzzle", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/playground/puzzle/src", - "projectType": "application", - "implicitDependencies": ["playground-client"], - "targets": { - "build": { - "executor": "@nx/vite:build", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/playground/puzzle" - } - }, - "dev": { - "executor": "@nx/vite:dev-server", - "defaultConfiguration": "development", - "options": { - "buildTarget": "playground-puzzle:build" - }, - "configurations": { - "development": { - "buildTarget": "playground-puzzle:build:development", - "hmr": true - }, - "development-for-website": { - "buildTarget": "playground-puzzle:build:development", - "hmr": true - }, - "production": { - "buildTarget": "playground-puzzle:build:production", - "hmr": false - } - } - }, - "test": { - "executor": "nx:noop", - "dependsOn": ["test:vite"] - }, - "test:esmcjs": { - "executor": "@wp-playground/nx-extensions:assert-built-esm-and-cjs", - "options": { - "outputPath": "dist/packages/playground/puzzle" - }, - "dependsOn": ["build"] - }, - "test:vite": { - "executor": "@nx/vite:test", - "outputs": ["{workspaceRoot}/coverage/packages/playground/puzzle"], - "options": { - "passWithNoTests": true, - "reportsDirectory": "../../../coverage/packages/playground/puzzle" - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/playground/puzzle/**/*.ts"] - } - } - }, - "typecheck": { - "executor": "nx:run-commands", - "options": { - "commands": [ - "tsc -p packages/playground/puzzle/tsconfig.lib.json --noEmit", - "tsc -p packages/playground/puzzle/tsconfig.spec.json --noEmit" - ] - } - }, - "tags": ["scope:web-client"] -} diff --git a/packages/playground/puzzle/public/favicon.ico b/packages/playground/puzzle/public/favicon.ico deleted file mode 100644 index 600ce3edec6e541e491515f752c2d60948c205b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16958 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 sbBAl=>F-3Juu5(#Mp>5%S{mKG5Z1f-?A<8J(X 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 diff --git a/packages/playground/puzzle/public/manifest.json b/packages/playground/puzzle/public/manifest.json deleted file mode 100644 index 45515402e8..0000000000 --- a/packages/playground/puzzle/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "WordPress Playground", - "name": "WordPress Playground", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/playground/puzzle/public/robots.txt b/packages/playground/puzzle/public/robots.txt deleted file mode 100644 index e9e57dc4d4..0000000000 --- a/packages/playground/puzzle/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/packages/playground/puzzle/src/App.scss b/packages/playground/puzzle/src/App.scss deleted file mode 100644 index 0003647ccc..0000000000 --- a/packages/playground/puzzle/src/App.scss +++ /dev/null @@ -1,57 +0,0 @@ -body, -#root, -.view { - height: 100vh; - overflow: hidden; -} - -.components-button, -.components-button.has-icon, -.components-button.has-icon.has-text, -.components-button.is-primary, -.components-button.is-secondary { - padding: 10px 31px; - display: flex; - align-items: center; - justify-content: center; - font-size: 13px; - font-weight: 600; - border: none; - height: 56px; - cursor: pointer; - - &.is-primary { - &, - &:hover, - &.is-busy { - background-color: #3858e9; - } - } - - &.is-secondary { - background-color: #fff; - color: #1e1e1e; - box-shadow: none; - } - - & > svg { - margin-right: 8px; - } -} - -.components-notice { - width: calc(100% - 72px); - max-width: 640px; - left: 50%; - transform: translateX(-50%); - margin: 4px 0; - bottom: 0; - position: absolute !important; - z-index: 3; - padding: 8px 12px !important; - height: 40px; - .components-button { - padding: 6px; - height: 40px; - } -} diff --git a/packages/playground/puzzle/src/App.tsx b/packages/playground/puzzle/src/App.tsx deleted file mode 100644 index d7ccb250db..0000000000 --- a/packages/playground/puzzle/src/App.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import { createBrowserRouter, RouterProvider } from 'react-router-dom'; - -import { Home } from './views/home/Home'; -import { Scan } from './views/scan/Scan'; -import { Site } from './views/site/Site'; - -import './App.scss'; - -const router = createBrowserRouter([ - { - path: '/puzzle/', - element: , - }, - { - path: '/puzzle/scan', - element: , - }, - { - path: '/puzzle/playground', - element: , - }, -]); - -export const App = () => { - return ; -}; diff --git a/packages/playground/puzzle/src/assets/home-background.png b/packages/playground/puzzle/src/assets/home-background.png deleted file mode 100644 index 784b8b3ad74f7a1b849fa6afda0b01cfbeb472d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137104 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%0AAGq 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 void; - newAction: any; - isBusy: boolean; -}) => { - const [title, setTitle] = useState(); - - useEffect(() => { - if (typeof newAction === 'string') { - setTitle(newAction); - } else if (newAction) { - setTitle('Added ' + newAction.title); - } else { - setTitle(mainCta); - } - }, [newAction]); - - if (!title) { - return null; - } - - const classNames = ['scan__action']; - let icon = wordpress; - if (title !== mainCta) { - classNames.push('scan__action--success'); - icon = check; - } - - return ( - - ); -}; diff --git a/packages/playground/puzzle/src/components/footer/Footer.scss b/packages/playground/puzzle/src/components/footer/Footer.scss deleted file mode 100644 index 302a346b49..0000000000 --- a/packages/playground/puzzle/src/components/footer/Footer.scss +++ /dev/null @@ -1,25 +0,0 @@ -.footer { - position: absolute; - bottom: 0; - left: 0; - background: #23282d; - display: flex; - width: 100%; - box-sizing: border-box; - padding: 16px 32px; - justify-content: center; - align-items: center; - color: #ffffff; - font-size: 13px; - font-style: normal; - font-weight: 400; - line-height: 16px; - > a { - color: #ffffff; - text-decoration: none; - } - > svg { - fill: #ffffff; - margin: 0 8px; - } -} diff --git a/packages/playground/puzzle/src/components/footer/Footer.tsx b/packages/playground/puzzle/src/components/footer/Footer.tsx deleted file mode 100644 index 6b91f8a3ea..0000000000 --- a/packages/playground/puzzle/src/components/footer/Footer.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { Icon, wordpress } from '@wordpress/icons'; - -import './Footer.scss'; - -export const Footer = () => { - return ( - - ); -}; diff --git a/packages/playground/puzzle/src/components/loader/Loader.scss b/packages/playground/puzzle/src/components/loader/Loader.scss deleted file mode 100644 index 1948ea9ac8..0000000000 --- a/packages/playground/puzzle/src/components/loader/Loader.scss +++ /dev/null @@ -1,17 +0,0 @@ -.loader { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100vh; - z-index: 3; - - .components-spinner { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 100px; - height: 100px; - } -} diff --git a/packages/playground/puzzle/src/components/loader/Loader.tsx b/packages/playground/puzzle/src/components/loader/Loader.tsx deleted file mode 100644 index d2f620c422..0000000000 --- a/packages/playground/puzzle/src/components/loader/Loader.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React, { useEffect, useState } from 'react'; - -import './Loader.scss'; -import { Notice, Spinner } from '@wordpress/components'; - -export const Loader = () => { - const [showNotice, setShowNotice] = useState(false); - useEffect(() => { - // Prompt user to allow the camera access - const noticeTimeout = setTimeout(() => { - setShowNotice(true); - }, 5000); - return () => { - setShowNotice(false); - clearTimeout(noticeTimeout); - }; - }, []); - return ( -
- {showNotice && ( - setShowNotice(false)} - > - Allow camera access to scan the puzzle. - - )} - -
- ); -}; diff --git a/packages/playground/puzzle/src/components/scan-button/ScanButton.scss b/packages/playground/puzzle/src/components/scan-button/ScanButton.scss deleted file mode 100644 index b547ecd0b6..0000000000 --- a/packages/playground/puzzle/src/components/scan-button/ScanButton.scss +++ /dev/null @@ -1,32 +0,0 @@ -.scan__button { - .components-button.has-icon { - border-radius: 50%; - width: 112px; - height: 112px; - margin: 0 auto 48px; - > svg { - $icon-size: 30px; - width: $icon-size; - height: $icon-size; - margin: 0; - fill: #ffffff; - } - } - - &.scan__button--loading { - .components-button.has-icon { - > svg { - display: none; - } - .components-spinner { - display: block; - } - } - } - - .components-spinner { - position: absolute; - left: 50%; - transform: translate(-50%, 0); - } -} diff --git a/packages/playground/puzzle/src/components/scan-button/ScanButton.tsx b/packages/playground/puzzle/src/components/scan-button/ScanButton.tsx deleted file mode 100644 index e0ac4453af..0000000000 --- a/packages/playground/puzzle/src/components/scan-button/ScanButton.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Button, Spinner } from '@wordpress/components'; -import { capturePhoto } from '@wordpress/icons'; -import React, { useState } from 'react'; -import { useScanContext } from '../../context/scan'; - -import { getImageFromVideo } from '../../site-builder/image'; - -import './ScanButton.scss'; -import { readImageContent } from '../../site-builder/api'; - -export const ScanButton = ({ onSuccess }: { onSuccess: Function }) => { - const { videoElement, scanArea, setError } = useScanContext(); - const [loading, setLoading] = useState(false); - - const onClick = async () => { - if (!videoElement) { - return; - } - - const image = getImageFromVideo(videoElement, scanArea); - if (!image) { - return; - } - - setLoading(true); - setError(null); - - readImageContent(image) - .then((response) => { - if (typeof onSuccess === 'function') { - onSuccess(response); - } - }) - .catch((error) => { - setError(error.message); - }) - .finally(() => { - setLoading(false); - }); - }; - - const classNames = ['scan__button']; - if (loading) { - classNames.push('scan__button--loading'); - } - return ( -
- -
- ); -}; diff --git a/packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.scss b/packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.scss deleted file mode 100644 index 86c46864db..0000000000 --- a/packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.scss +++ /dev/null @@ -1,8 +0,0 @@ -.scan-overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100vh; - z-index: 1; -} diff --git a/packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.tsx b/packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.tsx deleted file mode 100644 index 6a75f7121f..0000000000 --- a/packages/playground/puzzle/src/components/scan-overlay/ScanOverlay.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React from 'react'; -import { useEffect, useRef } from 'react'; - -import './ScanOverlay.scss'; -import { useScanContext } from '../../context/scan'; - -// @ts-ignore-next-line -import overlayImage from '../../assets/shape.png'; - -export const ScanOverlay = () => { - const { setScanArea } = useScanContext(); - const overlay = useRef(null); - - const drawOverlay = () => { - if (!overlay.current) { - return; - } - const overlayElement = overlay.current as HTMLCanvasElement; - overlayElement.width = window.innerWidth; - overlayElement.height = window.innerHeight; - const ctx = overlayElement.getContext('2d'); - if (!ctx) { - return; - } - ctx.fillStyle = 'rgba(35, 40, 45, 0.9)'; - ctx.fillRect(0, 0, overlayElement.width, overlayElement.height); - ctx.globalCompositeOperation = 'destination-out'; - - const originalImageWidth = 526; - const originalImageHeight = 526; - const img = new Image(); - img.src = overlayImage; - - img.onload = () => { - img.width = window.innerWidth - 70; - if (img.width > originalImageWidth) { - img.width = originalImageWidth; - } - img.height = img.width * (originalImageHeight / originalImageWidth); - - const x = (window.innerWidth - img.width) / 2; - const y = (window.innerHeight - img.height) / 2; - - setScanArea({ - x, - y, - width: img.width, - height: img.height, - }); - - ctx.drawImage(img, x, y, img.width, img.height); - ctx.fill(); - }; - }; - - useEffect(drawOverlay, [overlay]); - useEffect(() => { - window.addEventListener('resize', drawOverlay); - return () => { - window.removeEventListener('resize', drawOverlay); - }; - }, []); - - return ; -}; diff --git a/packages/playground/puzzle/src/components/scan-video/ScanVideo.scss b/packages/playground/puzzle/src/components/scan-video/ScanVideo.scss deleted file mode 100644 index 69385f689a..0000000000 --- a/packages/playground/puzzle/src/components/scan-video/ScanVideo.scss +++ /dev/null @@ -1,6 +0,0 @@ -.scan-video__video { - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} diff --git a/packages/playground/puzzle/src/components/scan-video/ScanVideo.tsx b/packages/playground/puzzle/src/components/scan-video/ScanVideo.tsx deleted file mode 100644 index c61ee68162..0000000000 --- a/packages/playground/puzzle/src/components/scan-video/ScanVideo.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React, { useEffect, useRef } from 'react'; - -import './ScanVideo.scss'; -import { Loader } from '../loader/Loader'; -import { useScanContext } from '../../context/scan'; -import { ScanOverlay } from '../../components/scan-overlay/ScanOverlay'; - -export const ScanVideo = () => { - const { loading, setLoading, videoElement, setVideoElement } = - useScanContext(); - - const video = useRef(null); - - useEffect(() => { - if (!video.current) { - return; - } - - setVideoElement(video.current); - }, [setLoading, setVideoElement, video]); - - useEffect(() => { - if (!videoElement) { - return; - } - - if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { - return; - } - const resizeElements = () => { - if (!videoElement) { - return; - } - let ratio = 4 / 3; - if (videoElement.videoHeight) { - ratio = videoElement.videoWidth / videoElement.videoHeight; - } - - let width = window.innerWidth; - let height = window.innerHeight; - if (window.innerHeight > window.innerWidth) { - width = height * ratio; - } else { - height = width / ratio; - } - - videoElement.setAttribute('width', width.toString()); - videoElement.setAttribute('height', height.toString()); - }; - - navigator.mediaDevices - .getUserMedia({ - video: { - facingMode: 'environment', - }, - audio: false, - }) - .then((stream) => { - videoElement.srcObject = stream; - videoElement - .play() - .then(() => { - setLoading(false); - }) - .catch((err) => { - console.error(`An error occurred: ${err}`); - }); - }) - .catch((err) => { - console.error(`An error occurred: ${err}`); - }); - videoElement.addEventListener('canplay', resizeElements, false); - window.addEventListener('resize', resizeElements); - return () => { - videoElement.removeEventListener('canplay', resizeElements); - window.removeEventListener('resize', resizeElements); - }; - }, [videoElement, setLoading]); - - return ( - <> - {loading && } - {!loading && } - - - ); -}; diff --git a/packages/playground/puzzle/src/context/scan.ts b/packages/playground/puzzle/src/context/scan.ts deleted file mode 100644 index e4266e0721..0000000000 --- a/packages/playground/puzzle/src/context/scan.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { createContext, useContext } from 'react'; - -export const ScanContext = createContext<{ - loading: boolean; - setLoading: (loading: boolean) => void; - videoElement: HTMLVideoElement | null; - setVideoElement: (videoElement: HTMLVideoElement | null) => void; - scanArea: { - x: number; - y: number; - width: number; - height: number; - }; - setScanArea: (scanArea: { - x: number; - y: number; - width: number; - height: number; - }) => void; - error: string | null; - setError: (error: string | null) => void; -}>({ - loading: true, - setLoading: () => {}, - videoElement: null, - setVideoElement: () => {}, - scanArea: { - x: 0, - y: 0, - width: 0, - height: 0, - }, - setScanArea: () => {}, - error: null, - setError: () => {}, -}); -export const useScanContext = () => useContext(ScanContext); diff --git a/packages/playground/puzzle/src/index.css b/packages/playground/puzzle/src/index.css deleted file mode 100644 index 8886332fbc..0000000000 --- a/packages/playground/puzzle/src/index.css +++ /dev/null @@ -1,8 +0,0 @@ -body { - margin: 0; - font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', - 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', - 'Helvetica Neue', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/packages/playground/puzzle/src/index.tsx b/packages/playground/puzzle/src/index.tsx deleted file mode 100644 index 56aefd5c7a..0000000000 --- a/packages/playground/puzzle/src/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import '../../../../node_modules/@wordpress/components/build-style/style.css'; -import './index.css'; - -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import { App } from './App'; - -ReactDOM.createRoot(document.getElementById('root')!).render( - - - -); diff --git a/packages/playground/puzzle/src/setupTests.js b/packages/playground/puzzle/src/setupTests.js deleted file mode 100644 index 8f2609b7b3..0000000000 --- a/packages/playground/puzzle/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; diff --git a/packages/playground/puzzle/src/site-builder/api.ts b/packages/playground/puzzle/src/site-builder/api.ts deleted file mode 100644 index 3bec131c54..0000000000 --- a/packages/playground/puzzle/src/site-builder/api.ts +++ /dev/null @@ -1,47 +0,0 @@ -const API_URL = 'https://playground.wordpress.net/puzzle.php'; -const API_KEY = 'test'; - -const apiRequest = async ( - action: string, - data?: { - [key: string]: any; - } -) => { - if (!API_KEY) { - throw new Error('API key not found'); - } - const formdata = new FormData(); - formdata.append('action', action); - formdata.append('api_key', API_KEY); - if (data) { - Object.keys(data).forEach((key) => { - formdata.append(key, data[key]); - }); - } - return fetch(API_URL, { - method: 'POST', - body: formdata, - }) - .then((response) => response.json()) - .then((result) => { - if (result.error) { - throw new Error(result.error); - } - if (result.status === 'error') { - return Promise.reject(result.message); - } - return result.message; - }); -}; - -export const post = async () => { - return apiRequest('post'); -}; - -export const siteName = async () => { - return apiRequest('site-name'); -}; - -export const readImageContent = async (image: string) => { - return apiRequest('read-image', { image }); -}; diff --git a/packages/playground/puzzle/src/site-builder/blueprints/cookiebot.json b/packages/playground/puzzle/src/site-builder/blueprints/cookiebot.json deleted file mode 100644 index ae00e28b6b..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/cookiebot.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=cookiebot", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "cookiebot" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/dynamic-ooo.json b/packages/playground/puzzle/src/site-builder/blueprints/dynamic-ooo.json deleted file mode 100644 index bd8b685cac..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/dynamic-ooo.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "landingPage": "/wp-admin/", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "elementor" - }, - "options": { - "activate": true - } - }, - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "dynamic-visibility-for-elementor" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/elementor.json b/packages/playground/puzzle/src/site-builder/blueprints/elementor.json deleted file mode 100644 index 68564f72ab..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/elementor.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "elementor" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/fastspring.json b/packages/playground/puzzle/src/site-builder/blueprints/fastspring.json deleted file mode 100644 index 7fc8480c57..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/fastspring.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=fastspring_settings_menu", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "fastspring" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/google.json b/packages/playground/puzzle/src/site-builder/blueprints/google.json deleted file mode 100644 index b7376203ef..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/google.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=googlesitekit-splash", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "google-site-kit" - }, - "options": { - "activate": true - } - }, - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "performance-lab" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/jetformbuilder.json b/packages/playground/puzzle/src/site-builder/blueprints/jetformbuilder.json deleted file mode 100644 index c15af22cd0..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/jetformbuilder.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/post-new.php?post_type=jet-form-builder", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "jetformbuilder" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/jetpack.json b/packages/playground/puzzle/src/site-builder/blueprints/jetpack.json deleted file mode 100644 index 53804aa917..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/jetpack.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=my-jetpack", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "jetpack" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/omnisend.json b/packages/playground/puzzle/src/site-builder/blueprints/omnisend.json deleted file mode 100644 index 12443dab2c..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/omnisend.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=omnisend", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "omnisend" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/personalizewp.json b/packages/playground/puzzle/src/site-builder/blueprints/personalizewp.json deleted file mode 100644 index 8eb694463c..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/personalizewp.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=personalizewp", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "personalizewp" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/siteground.json b/packages/playground/puzzle/src/site-builder/blueprints/siteground.json deleted file mode 100644 index 6033f8d509..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/siteground.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=sg-cachepress", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "sg-cachepress" - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/w3-total-cache.json b/packages/playground/puzzle/src/site-builder/blueprints/w3-total-cache.json deleted file mode 100644 index f2e8430cec..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/w3-total-cache.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "landingPage": "/wp-admin/admin.php?page=w3tc_setup_guide", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "w3-total-cache" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/yith.json b/packages/playground/puzzle/src/site-builder/blueprints/yith.json deleted file mode 100644 index e50f94c52b..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/yith.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "$schema": "https://playground.wordpress.net/blueprint-schema.json", - "landingPage": "/wp-admin/admin.php?page=yith_wcwl_panel&tab=settings&sub_tab=settings-add_to_wishlist", - "steps": [ - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "woocommerce" - } - }, - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "wordpress-importer" - } - }, - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "yith-woocommerce-wishlist" - } - }, - { - "step": "wp-cli", - "command": "wp option update yith_wcwl_show_on_loop 'yes'" - }, - { - "step": "wp-cli", - "command": "wp import /wordpress/wp-content/plugins/woocommerce/sample-data/sample_products.xml --authors=create" - }, - { - "step": "wp-cli", - "command": "wp transient set _wc_activation_redirect 0 259200" - }, - { - "step": "wp-cli", - "command": "wp option update woocommerce_onboarding_profile '{\"skipped\": true}' --format=json" - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/blueprints/yoast.json b/packages/playground/puzzle/src/site-builder/blueprints/yoast.json deleted file mode 100644 index 7ab59868bc..0000000000 --- a/packages/playground/puzzle/src/site-builder/blueprints/yoast.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "landingPage": "/", - "steps": [ - { - "step": "writeFile", - "path": "/wordpress/wp-content/mu-plugins/wp-seo.php", - "data": "" - }, - { - "step": "installPlugin", - "pluginZipFile": { - "resource": "wordpress.org/plugins", - "slug": "wordpress-seo" - }, - "options": { - "activate": true - } - } - ] -} diff --git a/packages/playground/puzzle/src/site-builder/image.ts b/packages/playground/puzzle/src/site-builder/image.ts deleted file mode 100644 index efc767eb98..0000000000 --- a/packages/playground/puzzle/src/site-builder/image.ts +++ /dev/null @@ -1,40 +0,0 @@ -export const getImageFromVideo = ( - video: HTMLVideoElement, - scanArea: { width: number; height: number } -) => { - const videoCanvas = document.createElement('canvas'); - videoCanvas.width = video.width; - videoCanvas.height = video.height; - const videoCtx = videoCanvas.getContext('2d'); - if (!videoCtx) { - return; - } - videoCtx.drawImage(video, 0, 0, video.width, video.height); - - const imageCanvas = document.createElement('canvas'); - imageCanvas.width = scanArea.width; - imageCanvas.height = scanArea.height; - const imageCtx = imageCanvas.getContext('2d'); - if (!imageCtx) { - return; - } - const x = (video.width - scanArea.width) / 2; - const y = (video.height - scanArea.height) / 2; - imageCtx.drawImage( - videoCanvas, - x, - y, - scanArea.width, - scanArea.height, - 0, - 0, - imageCanvas.width, - imageCanvas.height - ); - - const image = imageCanvas.toDataURL('image/png'); - - videoCanvas.remove(); - imageCanvas.remove(); - return image; -}; diff --git a/packages/playground/puzzle/src/site-builder/index.ts b/packages/playground/puzzle/src/site-builder/index.ts deleted file mode 100644 index d7e04ee8c1..0000000000 --- a/packages/playground/puzzle/src/site-builder/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './processor'; diff --git a/packages/playground/puzzle/src/site-builder/processor.ts b/packages/playground/puzzle/src/site-builder/processor.ts deleted file mode 100644 index 1270c3594e..0000000000 --- a/packages/playground/puzzle/src/site-builder/processor.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { siteName, post } from './api'; -import omnisend from './blueprints/omnisend.json'; -import google from './blueprints/google.json'; -import jetpack from './blueprints/jetpack.json'; -import elementor from './blueprints/elementor.json'; -import yith from './blueprints/yith.json'; -import dynamicOoo from './blueprints/dynamic-ooo.json'; -import personalizewp from './blueprints/personalizewp.json'; -import jetformbuilder from './blueprints/jetformbuilder.json'; -import fastspring from './blueprints/fastspring.json'; -import cookiebot from './blueprints/cookiebot.json'; -import w3TotalCache from './blueprints/w3-total-cache.json'; -import siteground from './blueprints/siteground.json'; -import yoast from './blueprints/yoast.json'; - -export type Action = { - title: string; -}; -// TODO enable the rest of the actions once the blueprints are fixed -export const actions: { [key: string]: Action } = { - multisite: { - title: 'Multisite', - }, - 'site name': { - title: 'Site Name', - }, - post: { - title: 'Post', - }, - '/wp-admin/': { - title: '/wp-admin/', - }, - omnisend: { - title: 'Omnisend', - }, - google: { - title: 'Google', - }, - jetpack: { - title: 'Jetpack', - }, - elementor: { - title: 'Elementor', - }, - yith: { - title: 'YITH', - }, - 'dynamic.ooo': { - title: 'Dynamic.ooo', - }, - personalizewp: { - title: 'PersonalizeWP', - }, - jetformbuilder: { - title: 'JetFormBuilder', - }, - fastspring: { - title: 'Fastspring', - }, - cookiebot: { - title: 'Cookiebot', - }, - 'w3 total cache': { - title: 'W3 Total Cache', - }, - siteground: { - title: 'SiteGround', - }, - yoast: { - title: 'Yoast', - }, -}; - -const actionBlueprints = { - omnisend, - google, - jetpack, - elementor, - yith, - 'dynamic.ooo': dynamicOoo, - personalizewp, - jetformbuilder, - fastspring, - cookiebot, - 'w3 total cache': w3TotalCache, - siteground, - yoast, -}; - -export const getActions = (titles: string[]) => { - return titles - .map((item) => { - item = item.toLowerCase(); - return Object.keys(actions).find((key) => item.includes(key)); - }) - .filter((item) => item !== undefined); -}; - -export const processImage = async (actions: string[]) => { - if (actions === undefined || actions.length === 0) { - throw new Error( - 'No puzzle pieces found. Please ensure the text is clear and try again.' - ); - } - - const blueprint: any = (actions as string[]).reduce( - (acc, action: string) => - mergeBlueprints([ - acc, - actionBlueprints[action as keyof typeof actionBlueprints], - ]), - {} - ); - if (actions.includes('/wp-admin/')) { - blueprint['landingPage'] = '/wp-admin/'; - } else if (actions.length > 1) { - blueprint['landingPage'] = '/wp-admin/plugins.php'; - } - - if (actions.includes('multisite')) { - blueprint.steps = [ - { - step: 'enableMultisite', - }, - ...blueprint.steps, - ]; - blueprint['landingPage'] = '/wp-admin/network/'; - } - - if (actions.includes('site name')) { - blueprint.steps = [ - { - step: 'setSiteOptions', - options: { - blogname: await siteName(), - }, - }, - ...blueprint.steps, - ]; - } - - if (actions.includes('post')) { - const data = await post(); - blueprint.steps = [ - { - step: 'runPHP', - // $insert_post='${data.slug}'; is a hack to allow us to find this step and extract the slug - code: ` '${data.title}', 'post_content' => '${data.content}', 'post_slug' => '${data.slug}', 'post_status' => 'publish')); ?>`, - }, - ...blueprint.steps, - ]; - // override the landing page to open the post - blueprint.landingPage = `/${data.slug}`; - } - - // Add default steps - blueprint.steps = [ - { - step: 'login', - }, - { - step: 'writeFile', - path: '/wordpress/wp-content/mu-plugins/rewrite.php', - data: "set_permalink_structure('/%postname%/'); $wp_rewrite->flush_rules(); } );", - }, - { - step: 'writeFile', - path: '/wordpress/wp-content/mu-plugins/disable-elementor-onboarding.php', - data: " { - const newBlueprint: any = { - phpExtensionBundles: ['kitchen-sink'], - features: { - networking: true, - }, - steps: [], - }; - - const landingPages: string[] = []; - let themeInstalled = false; - for (const blueprint of blueprints) { - if (!blueprint) { - continue; - } - if (blueprint.landingPage) { - landingPages.push(blueprint.landingPage); - } - if (!blueprint.steps) { - continue; - } - newBlueprint.steps = [ - ...newBlueprint.steps, - ...blueprint.steps.filter( - (step: any) => !excludedSteps.includes(step.step) - ), - ]; - - if ( - themeInstalled === false && - blueprint.steps.find((step: any) => step.step === 'installTheme') - ) { - themeInstalled = true; - } - } - - // If one landing page is defined, use it - if (themeInstalled) { - newBlueprint.landingPage = '/'; - } - // If multiple landing pages are defined, go to the first one - else if (landingPages.length === 1) { - newBlueprint.landingPage = landingPages[0]; - } else { - newBlueprint.landingPage = '/'; - } - - return newBlueprint; -}; diff --git a/packages/playground/puzzle/src/views/home/Home.scss b/packages/playground/puzzle/src/views/home/Home.scss deleted file mode 100644 index 337eb990e8..0000000000 --- a/packages/playground/puzzle/src/views/home/Home.scss +++ /dev/null @@ -1,85 +0,0 @@ -$blue: #3858e9; - -.view--home { - overflow-y: hidden; - background-color: $blue; -} - -.home__content { - position: relative; - z-index: 1; - display: flex; - flex-direction: column; - align-items: center; -} - -.home__title, -.home__description { - color: #ffffff; - text-align: center; - font-style: normal; - font-weight: 400; - max-width: 310px; -} - -.home__title { - font-size: 40px; - line-height: 48px; - font-family: 'EB Garamond', serif; - margin: 56px 20px 20px; - - @media screen and (max-height: 460px) { - margin-top: 48px; - } -} - -.home__description { - font-size: 16px; - line-height: 24px; - margin: 0 0 32px; -} - -.scan .components-button.home__action { - color: #ffffff; - margin: 0 0 32px; - > svg { - fill: #ffffff; - } -} - -.home__image { - overflow: hidden; - position: absolute; - bottom: 0; - left: 50%; - transform: translateX(-50%); - margin-top: 236px; - width: calc(1.255 * 50vh); - max-width: 100%; - height: 50vh; - margin: 0 auto; - & > img { - position: absolute; - bottom: 0; - left: 0; - width: calc(1.255 * 50vh); - height: 50vh; - $home-content-height: 330px; - max-height: calc(100vh - #{$home-content-height}); - } - - @media screen and (max-height: 700px) { - top: 400px; - } -} - -.home__action { - width: 186px; - height: 56px; - .components-spinner { - margin: 0; - $icon-size: 24px; - width: $icon-size; - height: $icon-size; - } -} diff --git a/packages/playground/puzzle/src/views/home/Home.tsx b/packages/playground/puzzle/src/views/home/Home.tsx deleted file mode 100644 index 5b211c887b..0000000000 --- a/packages/playground/puzzle/src/views/home/Home.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React, { useState } from 'react'; -import { useNavigate } from 'react-router-dom'; - -import './Home.scss'; -import { Footer } from '../../components/footer/Footer'; -import { Button, Spinner } from '@wordpress/components'; -import { capturePhoto } from '@wordpress/icons'; - -// @ts-ignore-next-linea -import backgroundImage from '../../assets/home-background.png'; - -export const Home = () => { - const [loading, setLoading] = useState(false); - const navigate = useNavigate(); - const onClick = () => { - setLoading(true); - navigator.mediaDevices - .getUserMedia({ - video: { - facingMode: 'environment', - }, - audio: false, - }) - .then(() => { - navigate('/puzzle/scan'); - }) - .catch((error) => { - // eslint-disable-next-line no-console - console.error(error); - }) - .finally(() => { - setLoading(false); - }); - }; - return ( - <> -
-
-

- Build your site with real blocks -

-

- Arrange the puzzles, take a picture, and see your setup - come to life in seconds. -

- -
-
- Playground sites -
-
-