Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Restructures the repository as monorepo and separates the PHP implementation from the WordPress-specific bits. The new packages: * **php-wasm** – low-level WASM PHP primitives * A configurable PHP build pipeline for different targets (web, node.js, standalone) * A low-level `PHP` JavaScript class with `eval` for executing PHP code and FS utils like `writeFile` for runtime managing the * A `PHPServer` JavaScript class for dispatching HTTP requests – both to run the PHP files AND to download static files * A `PHPBrowser` JavaScript class to consume the above using an iframe * **php-wasm-browser** – a high-level layer to efficiently run `php-wasm` in the browser * `service-worker` utilities to redirect the browser traffic to `PHPServer` * `worker-thread` utilities to offload the `PHPServer` to a separate process. Three backends are available: Iframe, Webworker, SharedWorker. * A messaging layer and setup helpers to connect the above. * Server utilities to serve the correct headers for the `wasm` files via `.htaccess`. * **wordpress-wasm** – WordPress-specific WASM PHP bindings for web and node.js * The required WordPress-specific setup like constants and filters * `wp.data` bundling pipeline for the web configurable to bundle custom code * WordPress API to ease common tasks like login, install a plugin, start a block editor with specific settings and content * A `fetch`-based transport for HTTP requests * An example app demonstrating WordPress in the browser. Let's eventually extract it into a separate package or at least a directory. Other, general notes: * Pre-built binaries are shipped in the global `build` directory – it would be nice to either move them to their specific packages, or remove them from the repo completely and download them from somewhere on the initial build. * `esbuild` is used to build each packages and then the entire app. * Gulp is used for orchestration. Perhaps https://nx.dev/ would make a good replacement in the future. * There is no package publishing process yet. Perhaps Lerna would make a good one? Solves WordPress#51 and WordPress#16
- Loading branch information