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

fix(tauri/asset): escape octal sequences in css #1166

Merged
merged 2 commits into from Jan 30, 2021
Merged

Conversation

nklayman
Copy link
Member

What kind of change does this PR introduce? (check at least one)

  • Bugfix
  • Feature
  • New Binding Issue #___
  • Code style update
  • Refactor
  • Build-related changes
  • Other, please describe:

Does this PR introduce a breaking change? (check one)

  • Yes. Issue #___
  • No

The PR fulfills these requirements:

  • When resolving a specific issue, it's referenced in the PR's title (e.g. fix: #xxx[,#xxx], where "xxx" is the issue number)
  • A change file is added if any packages will require a version bump due to this PR per the instructions in the readme.

If adding a new feature, the PR's description includes:

  • A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

Other information:

Octal escape sequences, sometimes used for special unicode characters, are not allowed in template literals. Since Tauri's asset loader for no-server injects css into a template literal, it will throw an error if the css contains an octal sequence. This PR will replace \ with \\ in css assets which will allow the octal sequence to pass through to the css without triggering a JS error.

@nklayman nklayman requested a review from a team January 30, 2021 04:15
Copy link
Sponsor Member

@nothingismagick nothingismagick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't forget to add a .changes file to this PR.

@@ -76,7 +76,8 @@ pub fn load(
document.getElementsByTagName("head")[0].appendChild(css);
}})(`{css}`)
"#,
css = asset_str
// Escape octal sequences, which aren't allowed in template literals
css = asset_str.replace("\\", "\\\\").as_str()
Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what if there are already e.g. \\\\? Wouldn't that make \\\\\\\\? or is this a non-concern?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is desired behavior. Since the content is being injected into a template literal, the extra slashes will be reverted back to original when the content is actually injected into the dom.

@nklayman nklayman requested a review from a team as a code owner January 30, 2021 18:44
@nklayman
Copy link
Member Author

Okay I added it 👍.

@lucasfernog lucasfernog merged commit 4491c70 into dev Jan 30, 2021
@lucasfernog lucasfernog deleted the css-inliner-octal branch January 30, 2021 18:46
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.

None yet

3 participants