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

refactor(types): more precision #5531

Merged
merged 9 commits into from
Dec 6, 2023
Merged

Conversation

wmertens
Copy link
Member

@wmertens wmertens commented Dec 6, 2023

Specifics:

  • piggyback on TS HTML types as much as possible (now automatically supports new props like popover)
  • Remove QwikEvents and SyntheticEvents, they are really just DOM events
  • improve QRL and QRLInternal types for better matching
  • useOn* now can infer type and the passed element is also typed
  • move the QRL AbortSignal to server$, the only place where it's supported
  • generic parameter to useDocumentHead for the frontmatter
  • DOM ref={} functions get the type of the element

Generic:

  • add some tests for the types
  • use unknown or actual type instead of any where possible
    • if not used as part of an extends test, it's probably ok to change any to unknown. It will surface type mismatches.
  • fix function signatures so they can match extends ( (...args: any) => any instead of (...args: any[]) => any
  • change some interfaces to types if they're not meant to be merge-extended and they're not extending (interfaces have a performance advantage there)
  • add jsdoc comments

Actual code changes:

  • In use-task.ts, allow track(signal) inside a task
  • in docs, remove useless filtering from class array
  • changed some hardcoded strings to constants

@wmertens wmertens requested a review from mhevery December 6, 2023 14:18
Copy link

netlify bot commented Dec 6, 2023

Deploy Preview for qwik-insights canceled.

Name Link
🔨 Latest commit d1b5928
🔍 Latest deploy log https://app.netlify.com/sites/qwik-insights/deploys/6570d5123f28d300087bb09b

@wmertens wmertens force-pushed the types-refinements branch 4 times, most recently from b27462a to e1a0e21 Compare December 6, 2023 19:12
@wmertens wmertens changed the title chore(types): more precision refactor(types): more precision Dec 6, 2023
Specifics:
- piggyback on TS HTML types as much as possible (now automatically supports new props like popover)
- Remove QwikEvents and SyntheticEvents, they are really just DOM events
- improve QRL and QRLInternal types for better matching
- useOn* now can infer type and the passed element is also typed
- move the QRL AbortSignal to server$, the only place where it's supported
- generic parameter to useDocumentHead for the frontmatter
- DOM ref={} functions get the type of the element

Generic:
- add some tests for the types
- use `unknown` or actual type instead of `any` where possible
  - if not used as part of an `extends` test, it's probably ok to change `any` to `unknown`. It will surface type mismatches.
- fix function signatures so they can match extends ( `(...args: any) => any` instead of `(...args: any[]) => any`
- change some interfaces to types if they're not meant to be merge-extended and they're not extending (interfaces have a performance advantage there)
- add jsdoc comments

Actual code changes:
- In use-task.ts, allow `track(signal)` inside a task
- in docs, remove useless filtering from class array
- changed some hardcoded strings to constants
for some reason it is not visible unless it's a dev dependency
@gioboa
Copy link
Member

gioboa commented Dec 6, 2023

🤯 what a great work. you rock

@wmertens wmertens enabled auto-merge (rebase) December 6, 2023 20:26
@wmertens wmertens merged commit 3bdf043 into QwikDev:main Dec 6, 2023
26 checks passed
kodiakhq bot referenced this pull request in ascorbic/unpic-img Dec 10, 2023
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@builder.io/qwik](https://qwik.builder.io/) ([source](https://togithub.com/BuilderIO/qwik/tree/HEAD/packages/qwik)) | [`1.2.19` -> `1.3.0`](https://renovatebot.com/diffs/npm/@builder.io%2fqwik/1.2.19/1.3.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@builder.io%2fqwik/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@builder.io%2fqwik/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@builder.io%2fqwik/1.2.19/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@builder.io%2fqwik/1.2.19/1.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>BuilderIO/qwik (@&#8203;builder.io/qwik)</summary>

### [`v1.3.0`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.3.0)

[Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.2.19...v1.3.0)

#### Breaking Changes

-   When passing a `Signal` into `track()` directly (instead of passing a function), it returns the signal value instead of the signal itself. This behavior was already present when running inside a `useResource$` callback, and now it is consistent across all Tasks.

#### What's Changed

-   chore: Vite 5 by [@&#8203;wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5451](https://togithub.com/BuilderIO/qwik/pull/5451)
-   feat: add qwik/no-use-visible-task eslint rule by [@&#8203;gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5455](https://togithub.com/BuilderIO/qwik/pull/5455)
-   chore(insights): remove unnecessary log by [@&#8203;gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5461](https://togithub.com/BuilderIO/qwik/pull/5461)
-   fix: add example context to docs by [@&#8203;dotarjun](https://togithub.com/dotarjun) in [https://github.com/BuilderIO/qwik/pull/5467](https://togithub.com/BuilderIO/qwik/pull/5467)
-   feat(qwik-city): allow customizing SVGO options of image plugin by [@&#8203;hbendev](https://togithub.com/hbendev) in [https://github.com/BuilderIO/qwik/pull/5407](https://togithub.com/BuilderIO/qwik/pull/5407)
-   docs: fix typo by [@&#8203;ulic75](https://togithub.com/ulic75) in [https://github.com/BuilderIO/qwik/pull/5472](https://togithub.com/BuilderIO/qwik/pull/5472)
-   docs: fix typo by [@&#8203;Adbib](https://togithub.com/Adbib) in [https://github.com/BuilderIO/qwik/pull/5481](https://togithub.com/BuilderIO/qwik/pull/5481)
-   fix(core): Support JSX in signals by [@&#8203;mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5442](https://togithub.com/BuilderIO/qwik/pull/5442)
-   docs(FAQ): - lazy-loading on user interaction & speculative module fetching by [@&#8203;maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5488](https://togithub.com/BuilderIO/qwik/pull/5488)
-   docs(faq): add link to typescript by [@&#8203;maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5487](https://togithub.com/BuilderIO/qwik/pull/5487)
-   fix: disable Vite modulepreload by [@&#8203;gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5493](https://togithub.com/BuilderIO/qwik/pull/5493)
-   docs(faq): fix typos and improve the wording of some sentences by [@&#8203;maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5490](https://togithub.com/BuilderIO/qwik/pull/5490)
-   docs: make the distinction between module-prefetching and <Link prefetch> by [@&#8203;maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5485](https://togithub.com/BuilderIO/qwik/pull/5485)
-   docs(showcase): add `index.app` and `wiza.co` by [@&#8203;necatikcl](https://togithub.com/necatikcl) in [https://github.com/BuilderIO/qwik/pull/5484](https://togithub.com/BuilderIO/qwik/pull/5484)
-   fix(docs): mdx interpreting title as component by [@&#8203;maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5499](https://togithub.com/BuilderIO/qwik/pull/5499)
-   docs(/faq#vdom): cleanup the vdom section by [@&#8203;maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5500](https://togithub.com/BuilderIO/qwik/pull/5500)
-   fix: revert "fix: remove cf pages stream polyfill" by [@&#8203;gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5502](https://togithub.com/BuilderIO/qwik/pull/5502)
-   fix(qwik-city): prefix ids of SVGs based on their path when loaded as qwik nodes by [@&#8203;hbendev](https://togithub.com/hbendev) in [https://github.com/BuilderIO/qwik/pull/5497](https://togithub.com/BuilderIO/qwik/pull/5497)
-   fix: cf pages polyfill only if needed by [@&#8203;mpeg](https://togithub.com/mpeg) in [https://github.com/BuilderIO/qwik/pull/5507](https://togithub.com/BuilderIO/qwik/pull/5507)
-   refactor(core): extract Group type by [@&#8203;wtlin1228](https://togithub.com/wtlin1228) in [https://github.com/BuilderIO/qwik/pull/4798](https://togithub.com/BuilderIO/qwik/pull/4798)
-   docs: add QwikCityMockProvider explanation by [@&#8203;mulztob](https://togithub.com/mulztob) in [https://github.com/BuilderIO/qwik/pull/5505](https://togithub.com/BuilderIO/qwik/pull/5505)
-   docs(glob-import): add documentation for import.meta.glob by [@&#8203;maiieul](https://togithub.com/maiieul) in [https://github.com/BuilderIO/qwik/pull/5504](https://togithub.com/BuilderIO/qwik/pull/5504)
-   fix: CF pages polyfill also when shimmed by [@&#8203;mpeg](https://togithub.com/mpeg) in [https://github.com/BuilderIO/qwik/pull/5512](https://togithub.com/BuilderIO/qwik/pull/5512)
-   fix(qwik): handle cypress dev server path by [@&#8203;dmitry-stepanenko](https://togithub.com/dmitry-stepanenko) in [https://github.com/BuilderIO/qwik/pull/5509](https://togithub.com/BuilderIO/qwik/pull/5509)
-   chore(cf): Fix CloudFlare build failure by [@&#8203;mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5524](https://togithub.com/BuilderIO/qwik/pull/5524)
-   docs: removed defunct sites by [@&#8203;mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5528](https://togithub.com/BuilderIO/qwik/pull/5528)
-   chore(netlify): fix netlify failure by [@&#8203;mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5527](https://togithub.com/BuilderIO/qwik/pull/5527)
-   docs(showcase): add juneikerc.com - blog \[prismic cms] and personal website  by [@&#8203;juneikerc](https://togithub.com/juneikerc) in [https://github.com/BuilderIO/qwik/pull/5523](https://togithub.com/BuilderIO/qwik/pull/5523)
-   fix(localization-starter): update docs and add script by [@&#8203;tzdesign](https://togithub.com/tzdesign) in [https://github.com/BuilderIO/qwik/pull/5494](https://togithub.com/BuilderIO/qwik/pull/5494)
-   chore(qwik-city): bump vite-imagetools ^5 -> ^6 by [@&#8203;birkskyum](https://togithub.com/birkskyum) in [https://github.com/BuilderIO/qwik/pull/5525](https://togithub.com/BuilderIO/qwik/pull/5525)
-   feat(insights): polish UI by [@&#8203;zanettin](https://togithub.com/zanettin) in [https://github.com/BuilderIO/qwik/pull/5503](https://togithub.com/BuilderIO/qwik/pull/5503)
-   chore: update .nvmrc by [@&#8203;gioboa](https://togithub.com/gioboa) in [https://github.com/BuilderIO/qwik/pull/5530](https://togithub.com/BuilderIO/qwik/pull/5530)
-   feat(insight): Add user auth to only see your app data. by [@&#8203;mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5517](https://togithub.com/BuilderIO/qwik/pull/5517)
-   chore(ci): set up CI for insights and docs by [@&#8203;mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5533](https://togithub.com/BuilderIO/qwik/pull/5533)
-   refactor(types): more precision by [@&#8203;wmertens](https://togithub.com/wmertens) in [https://github.com/BuilderIO/qwik/pull/5531](https://togithub.com/BuilderIO/qwik/pull/5531)
-   chore: 1.3.0 by [@&#8203;mhevery](https://togithub.com/mhevery) in [https://github.com/BuilderIO/qwik/pull/5535](https://togithub.com/BuilderIO/qwik/pull/5535)

#### New Contributors

-   [@&#8203;dotarjun](https://togithub.com/dotarjun) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5467](https://togithub.com/BuilderIO/qwik/pull/5467)
-   [@&#8203;Adbib](https://togithub.com/Adbib) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5481](https://togithub.com/BuilderIO/qwik/pull/5481)
-   [@&#8203;mulztob](https://togithub.com/mulztob) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5505](https://togithub.com/BuilderIO/qwik/pull/5505)
-   [@&#8203;juneikerc](https://togithub.com/juneikerc) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5523](https://togithub.com/BuilderIO/qwik/pull/5523)
-   [@&#8203;birkskyum](https://togithub.com/birkskyum) made their first contribution in [https://github.com/BuilderIO/qwik/pull/5525](https://togithub.com/BuilderIO/qwik/pull/5525)

**Full Changelog**: QwikDev/qwik@v1.2.19...v1.3.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 9pm on sunday" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/ascorbic/unpic-img).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->
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.

3 participants