Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move the stream-compression package from wp-playground to php-wasm #895

Merged
merged 2 commits into from
Dec 22, 2023

Conversation

adamziel
Copy link
Collaborator

@adamziel adamziel commented Dec 22, 2023

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.

This PR also ships eslint rules to keep the stream-compression package independent from the heavy @php-wasm/web and @php-wasm/node packages. This should enable using it in other project with a minimal dependency overhead of just @php-wasm/util and @php-wasm/node-polyfills.

Testing instructions

Since the package isn't used anywhere yet, only confirm if the CI checks pass.

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.
@adamziel adamziel merged commit 1350996 into trunk Dec 22, 2023
5 checks passed
@adamziel adamziel deleted the move-stream-compression-to-php-wasm branch December 22, 2023 10:57
@adamziel adamziel mentioned this pull request Dec 22, 2023
8 tasks
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant