Move the stream-compression package from wp-playground to php-wasm#895
Merged
Conversation
Stream Compression introduced in #851 has no dependencies on WordPress and can be used in any JavaScript project. It also makes sense as a dependency for some `@php-wasm` packages. This commit, therefore, moves it from the `wp-playground` to the `php-wasm` npm namespace, making it reusable across the entire project. In addition, this adds a new `iterateFiles` function to the `@php-wasm/universal` package, which allows iterating over the files in the PHP filesystem. It uses the `stream-compression` package, which was some of the motivation for the move. ## Testing instructions Since the package isn't used anywhere yet, only confirm if the CI checks pass.
moonmeister
pushed a commit
to moonmeister/wordpress-playground
that referenced
this pull request
Dec 23, 2023
…nfig, and the sqlite-database-integration plugin (WordPress#872) ## Description Includes the `wp-config.php` file and the default WordPress theme (like `twentytwentythree`) in the zip file exported via the "Download as .zip" button. Without those files, the exported bundle isn't self-contained. It cannot be hosted, and any the importer needs to provide the missing files on its own. The theme and the plugins are easy to backfill, but the data stored in `wp-config.php` is lost. ## How is the problem addressed? This PR adds a temporary private `selfContained` option to the `importWpContent`. It is `false` by default to ensure those files are not exported with GitHub PRs (the export flow relies on the same logic). The zip download button sets it to `true`. This is a temporary workaround as we currently don't have any better tools to deal with this problem. Once the streaming/iterators API ships in WordPress#851, we'll be able to get rid of this hack and just filter the stream of files. ## Testing Instructions Unfortunately, this PR ships no unit tests as without WordPress#895 there isn't an easy way to test the `zipWpContent` function. Here's the manual testing steps to take: 1. Open Playground 2. Make a change in the site content 3. Export Playground into a zip file 4. Confirm that zip file contains the `wp-content.php` file as well as the `twentytwentyfour` theme and the `sqlite-database-integration` plugin 5. Refresh the Playground tab and import that zip 6. Confirm it worked and the website is functional and has the content update from before 7. Export it to GitHub, check the "include zip file" checkbox 8. Confirm the GitHub PR has no `twentytwentyfour` theme, or the `wp-config.php` file, or the `sqlite-database-integration` plugin. 9. Do the same for the zip bundled with the GitHub PR 10. Import that PR and confirm it imports cleanly
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stream Compression introduced in #851 has no dependencies on WordPress and can be used in any JavaScript project. It also makes sense as a dependency for some
@php-wasmpackages. This commit, therefore, moves it from thewp-playgroundto thephp-wasmnpm namespace, making it reusable across the entire project.In addition, this adds a new
iterateFilesfunction to the@php-wasm/universalpackage, which allows iterating over the files in the PHP filesystem. It uses thestream-compressionpackage, which was some of the motivation for the move.This PR also ships eslint rules to keep the
stream-compressionpackage independent from the heavy@php-wasm/weband@php-wasm/nodepackages. This should enable using it in other project with a minimal dependency overhead of just@php-wasm/utiland@php-wasm/node-polyfills.Testing instructions
Since the package isn't used anywhere yet, only confirm if the CI checks pass.