cristianbote / goober

🥜 goober, a less than 1KB 🎉 css-in-js alternative with a familiar API
https://goober.rocks
MIT License
3.11k stars 118 forks source link

fix: don't use `globalThis` when using `this` #562

Open jluxenberg opened 1 year ago

jluxenberg commented 1 year ago

Without "use strict", this will be set to globalThis which is typically the window object. If certain properties are set on the window object (e.g. "window.target"), this can cause problems for the css and styled functions.

Instead, check that this has been set to something other than globalThis before using it. This ensures that this will only have a value if it is explicitly bound, and otherwise will be undefined.

Note: I tried to add "use strict"; directives where needed, but couldn't get them to "survive" the build process -- they were removed. This fix seems to work just fine.

Closes https://github.com/cristianbote/goober/issues/545

vercel[bot] commented 1 year ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
goober-rocks ❌ Failed (Inspect) Sep 6, 2023 5:45am
codesandbox-ci[bot] commented 1 year ago

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit 7a26f07ee9d36b16c6b1921e54d5795317bff05a:

Sandbox Source
Vanilla Configuration
cristianbote commented 1 year ago

Heya @jluxenberg,

Thank you so much for this PR and for the details. goober uses microbundle to bundle it up, microbundle has a --strict option. Have you tried passing that? Meaning here a --strict flag should be passed https://github.com/cristianbote/goober/blob/master/package.json#L76C72-L76C72

jluxenberg commented 1 year ago

Heya @jluxenberg,

Thank you so much for this PR and for the details. goober uses microbundle to bundle it up, microbundle has a --strict option. Have you tried passing that? Meaning here a --strict flag should be passed https://github.com/cristianbote/goober/blob/master/package.json#L76C72-L76C72

I did try that (and added in all the places where microbundle is invoked) but it didn't seem to change the build artifacts at all.