-
Notifications
You must be signed in to change notification settings - Fork 767
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
chore(cli,client,runtime,screenshot,sys,testing): fix typescript issues #5771
Conversation
|
Path | Error Count |
---|---|
src/dev-server/index.ts | 37 |
src/dev-server/server-process.ts | 32 |
src/compiler/prerender/prerender-main.ts | 22 |
src/runtime/client-hydrate.ts | 20 |
src/runtime/vdom/vdom-render.ts | 20 |
src/screenshot/connector-base.ts | 19 |
src/testing/puppeteer/puppeteer-element.ts | 19 |
src/dev-server/request-handler.ts | 15 |
src/compiler/prerender/prerender-optimize.ts | 14 |
src/compiler/sys/stencil-sys.ts | 14 |
src/runtime/connected-callback.ts | 14 |
src/sys/node/node-sys.ts | 14 |
src/compiler/prerender/prerender-queue.ts | 13 |
src/compiler/sys/in-memory-fs.ts | 13 |
src/runtime/set-value.ts | 13 |
src/compiler/output-targets/output-www.ts | 12 |
src/compiler/transformers/test/parse-vdom.spec.ts | 12 |
src/compiler/transformers/transform-utils.ts | 12 |
src/mock-doc/test/attribute.spec.ts | 12 |
src/compiler/build/compiler-ctx.ts | 11 |
Our most common errors
Typescript Error Code | Count |
---|---|
TS2322 | 350 |
TS2345 | 329 |
TS18048 | 193 |
TS18047 | 76 |
TS2722 | 27 |
TS2532 | 24 |
TS2531 | 19 |
TS2454 | 14 |
TS2790 | 11 |
TS2352 | 9 |
TS2769 | 8 |
TS2416 | 7 |
TS2538 | 4 |
TS2493 | 3 |
TS18046 | 2 |
TS2684 | 1 |
TS2430 | 1 |
Unused exports report
There are 15 unused exports on this PR. That's the same number of errors on main, so at least we're not creating new ones!
Unused exports
File | Line | Identifier |
---|---|---|
src/runtime/bootstrap-lazy.ts | 21 | setNonce |
src/screenshot/screenshot-fs.ts | 18 | readScreenshotData |
src/testing/testing-utils.ts | 198 | withSilentWarn |
src/utils/index.ts | 145 | CUSTOM |
src/utils/index.ts | 245 | NODE_TYPES |
src/utils/index.ts | 269 | normalize |
src/utils/index.ts | 7 | escapeRegExpSpecialCharacters |
src/compiler/app-core/app-data.ts | 25 | BUILD |
src/compiler/app-core/app-data.ts | 116 | Env |
src/compiler/app-core/app-data.ts | 118 | NAMESPACE |
src/compiler/fs-watch/fs-watch-rebuild.ts | 123 | updateCacheFromRebuild |
src/compiler/types/validate-primary-package-output-target.ts | 61 | satisfies |
src/compiler/types/validate-primary-package-output-target.ts | 61 | Record |
src/testing/puppeteer/puppeteer-declarations.ts | 485 | WaitForEventOptions |
src/compiler/sys/fetch/write-fetch-success.ts | 7 | writeFetchSuccessSync |
PR built and packed!Download the tarball here: https://github.com/ionic-team/stencil/actions/runs/9120932034/artifacts/1511502530 If your browser saves files to
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good to me!
JEST_STENCIL_FACADE = new Jest28Stencil() as JestFacade; | ||
} else if (version === 29) { | ||
JEST_STENCIL_FACADE = new Jest29Stencil(); | ||
JEST_STENCIL_FACADE = new Jest29Stencil() as JestFacade; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just curious, why were these changes necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some type mismatches as VS Code fails to recognize multiple versions of Jest as usually us devs have only one installed. This makes the error "disappear".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we have to type cast the v28 and v29 ones but not v27?
@@ -16,7 +16,7 @@ export async function writeScreenshotData(dataDir: string, screenshotData: d.Scr | |||
} | |||
|
|||
export async function readScreenshotData(dataDir: string, screenshotId: string) { | |||
let rtn: d.Screenshot = null; | |||
let rtn: d.Screenshot | null = null; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 there's so many of these things scattered around the codebase, like how do you go and look at
const foo: string = null;
and think yup, looks good!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🙈 😆
if (typeof process.send !== 'function') { | ||
throw new Error('`getMismatchedPixels` must be run in a child process.'); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice, type safety and a nice helpful error message that guards against unsupported usage 👍
if (BUILD.hostListenerTargetParent && flags & LISTENER_FLAGS.TargetParent && elm.parentElement) | ||
return elm.parentElement; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this should be safe, looks like the only place that getHostListenerTarget
is called is right here:
stencil/src/runtime/host-listener.ts
Lines 34 to 40 in 5a82d01
listeners.map(([flags, name, method]) => { | |
const target = BUILD.hostListenerTarget ? getHostListenerTarget(elm, flags) : elm; | |
const handler = hostListenerProxy(hostRef, method); | |
const opts = hostListenerOpts(flags); | |
plt.ael(target, name, handler, opts); | |
(hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts)); | |
}); |
and I think if the return was undefined
before the result would have just been not adding the event listener
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If target
is undefined
and we would call plt.ael(target, name, handler, opts)
, wouldn't this try to call addEventListener
on undefined
then?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, which wouldn't throw an error, there just wouldn't be an event listener attached to any element
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One question (non-blocking)
JEST_STENCIL_FACADE = new Jest28Stencil() as JestFacade; | ||
} else if (version === 29) { | ||
JEST_STENCIL_FACADE = new Jest29Stencil(); | ||
JEST_STENCIL_FACADE = new Jest29Stencil() as JestFacade; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we have to type cast the v28 and v29 ones but not v27?
Because we have currently Jest v27 installed as dev dependencies which is what is being picked up by the IDE. |
What is the current behavior?
We have a lot of strict type issues in the project that need to get fixed.
What is the new behavior?
Squash some of them.
Documentation
Does this introduce a breaking change?
Testing
n/a
Other information
n/a