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

Custom Streaming Compiler #50

Merged
merged 29 commits into from
Oct 12, 2023
Merged

Custom Streaming Compiler #50

merged 29 commits into from
Oct 12, 2023

Conversation

withinboredom
Copy link
Contributor

Closes #40 by chance.

This implements a custom HTML5 streaming compiler. There are a number of possibilities created from doing this:

Invalid HTML (on-purpose)

The previous compiler was a validating compiler causing unexpected surprises and errors. This new compiler doesn't do any validation and marches on (much like a web browser) except that it leaves the invalid HTML for the browser to fix. For example, now you can write the following HTML and it not break the entire page:

<div hx-vals='{"val": "hello"}'></div>

Components all the way down

This also opened the door to implementing some functionality as components (form and fragment) allowing developers to take advantage of this functionality.

Components are invisible

The parser also allows for mutating the dom while parsing (after all, it is in the spec) and we use this to remove components from the dom before rendering. Since component inputs may contain sensitive information, it was imperative to figure out this bit. Now it is here.

src/Template/Parser/CompiledComponent.php Dismissed Show dismissed Hide dismissed
src/Template/Parser/StreamingCompiler.php Dismissed Show dismissed Hide dismissed
src/Template/Parser/StreamingCompiler.php Dismissed Show dismissed Hide dismissed
src/Template/Parser/StreamingCompiler.php Dismissed Show dismissed Hide dismissed
src/Template/Parser/StreamingCompiler.php Dismissed Show dismissed Hide dismissed
src/Template/Parser/StreamingCompiler.php Dismissed Show dismissed Hide dismissed
src/Template/Parser/StreamingCompiler.php Dismissed Show dismissed Hide dismissed
@withinboredom withinboredom added this pull request to the merge queue Oct 12, 2023
@codecov
Copy link

codecov bot commented Oct 12, 2023

Codecov Report

Attention: 517 lines in your changes are missing coverage. Please review.

Comparison is base (b9c5451) 28.83% compared to head (7715c79) 32.20%.

Additional details and impacted files
@@             Coverage Diff              @@
##               main      #50      +/-   ##
============================================
+ Coverage     28.83%   32.20%   +3.37%     
- Complexity      450      531      +81     
============================================
  Files            54       52       -2     
  Lines          1363     1807     +444     
============================================
+ Hits            393      582     +189     
- Misses          970     1225     +255     
Files Coverage Δ
src/Template/Attributes/Component.php 100.00% <100.00%> (ø)
src/Template/Escapers/Variables.php 85.36% <100.00%> (-2.44%) ⬇️
src/Template/Functional/Form.php 100.00% <100.00%> (ø)
src/Template/Functional/Route.php 92.00% <100.00%> (-8.00%) ⬇️
src/Hooks/Api/ApiHandler.php 0.00% <0.00%> (ø)
src/Hooks/Html/ComponentRegister.php 0.00% <0.00%> (ø)
src/App.php 0.00% <0.00%> (ø)
src/Hooks/Api/Invoker.php 0.00% <0.00%> (ø)
src/Hooks/Common/Headers.php 61.11% <57.14%> (+61.11%) ⬆️
src/Hooks/Html/Renderer.php 0.00% <0.00%> (ø)
... and 6 more

... and 11 files with indirect coverage changes

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to Branch Protection failures Oct 12, 2023
You're not authorized to push to this branch. Visit "About protected branches" for more information.
@withinboredom withinboredom added this pull request to the merge queue Oct 12, 2023
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to Branch Protection failures Oct 12, 2023
You're not authorized to push to this branch. Visit "About protected branches" for more information.
@withinboredom withinboredom merged commit ec3b0c0 into main Oct 12, 2023
5 checks passed
@withinboredom withinboredom deleted the streaming branch October 12, 2023 16:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Document API endpoint convention.
1 participant