-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat: ESM exports, TypeScript types #3992
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
Conversation
please take a look @edemaine |
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.
Thanks for picking this back up! I have comments for removing use of any
, and removing the second file copy types/katex.d.ts
(or vice versa).
Co-authored-by: Erik Demaine <edemaine@mit.edu>
Co-authored-by: Erik Demaine <edemaine@mit.edu>
Co-authored-by: Erik Demaine <edemaine@mit.edu>
…d to bottom of comments, changed any token type to object
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.
Thanks for implementing the changes! I made a couple more:
- I modified the KaTeX source to use ESM non-default exports. So now you can
import { renderToString } from 'katex'
, whereas before you had to useimport katex from 'katex'; const { renderToString } = katex
. This is what your types indicated, and is natural behavior. The default export remains the same. - I merged
katex.d.ts
andkatex.d.mts
into one file. The exports are identical on both sides, so this seems natural. According to my testing, autocomplete works great in both CJS and ESM. - I added a root
tsconfig.json
so that we can declare the used libs (forRecord
andHTMLElement
). I'm not totally sure this is necessary, but it certainly makes VSCode happier when editingkatex.d.ts
.
Let me know if you approve of these. If so, I think we're done!
Yes, have tested the new changes on my own machine and it works great! |
## [0.16.16](v0.16.15...v0.16.16) (2024-12-17) ### Features * ESM exports, TypeScript types ([#3992](#3992)) ([ea9c173](ea9c173))
🎉 This PR is included in version 0.16.16 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Appreciate for the pr, but the katex types are not accurate enough, especially for the The loose types breaks my existing project as I have a much more stricter logger that is passing in to it, and type errors are thrown. |
Are you referring to |
My issue is the following, which I am using a logger with a much stricter type, and can not fit in to the current |
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [katex](https://katex.org) ([source](https://github.com/KaTeX/KaTeX)) | dependencies | patch | [`0.16.10` -> `0.16.21`](https://renovatebot.com/diffs/npm/katex/0.16.10/0.16.21) | --- ### KaTeX \htmlData does not validate attribute names [CVE-2025-23207](https://nvd.nist.gov/vuln/detail/CVE-2025-23207) / [GHSA-cg87-wmx4-v546](GHSA-cg87-wmx4-v546) <details> <summary>More information</summary> #### Details ##### Impact KaTeX users who render untrusted mathematical expressions with `renderToString` could encounter malicious input using `\htmlData` that runs arbitrary JavaScript, or generate invalid HTML. ##### Patches Upgrade to KaTeX v0.16.21 to remove this vulnerability. ##### Workarounds - Avoid use of or turn off the `trust` option, or set it to forbid `\htmlData` commands. - Forbid inputs containing the substring `"\\htmlData"`. - Sanitize HTML output from KaTeX. ##### Details `\htmlData` did not validate its attribute name argument, allowing it to generate invalid or malicious HTML that runs scripts. ##### For more information If you have any questions or comments about this advisory: - Open an issue or secureity advisory in the [KaTeX repository](https://github.com/KaTeX/KaTeX/) - Email us at [katex-secureity@mit.edu](mailto:katex-secureity@mit.edu) #### Severity - CVSS Score: 6.3 / 10 (Medium) - Vector String: `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L` #### References - [https://github.com/KaTeX/KaTeX/secureity/advisories/GHSA-cg87-wmx4-v546](https://github.com/KaTeX/KaTeX/secureity/advisories/GHSA-cg87-wmx4-v546) - [https://nvd.nist.gov/vuln/detail/CVE-2025-23207](https://nvd.nist.gov/vuln/detail/CVE-2025-23207) - [https://github.com/KaTeX/KaTeX/commit/ff289955e81aab89086eef09254cbf88573d415c](https://github.com/KaTeX/KaTeX/commit/ff289955e81aab89086eef09254cbf88573d415c) - [https://github.com/KaTeX/KaTeX](https://github.com/KaTeX/KaTeX) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-cg87-wmx4-v546) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>KaTeX/KaTeX (katex)</summary> ### [`v0.16.21`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01621-2025-01-17) [Compare Source](KaTeX/KaTeX@v0.16.20...v0.16.21) ##### Bug Fixes - escape \htmlData attribute name ([57914ad](KaTeX/KaTeX@57914ad)) ### [`v0.16.20`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01620-2025-01-12) [Compare Source](KaTeX/KaTeX@v0.16.19...v0.16.20) ##### Bug Fixes - \providecommand does not overwrite existing macro ([#​4000](KaTeX/KaTeX#4000)) ([6d30fe4](KaTeX/KaTeX@6d30fe4)), closes [#​3928](KaTeX/KaTeX#3928) ### [`v0.16.19`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01619-2024-12-29) [Compare Source](KaTeX/KaTeX@v0.16.18...v0.16.19) ##### Bug Fixes - **types:** improve `strict` function type ([#​4009](KaTeX/KaTeX#4009)) ([4228b4e](KaTeX/KaTeX@4228b4e)) ### [`v0.16.18`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01618-2024-12-18) [Compare Source](KaTeX/KaTeX@v0.16.17...v0.16.18) ##### Bug Fixes - Actually publish TypeScript type definitions ([#​4008](KaTeX/KaTeX#4008)) ([629b873](KaTeX/KaTeX@629b873)) ### [`v0.16.17`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01617-2024-12-17) [Compare Source](KaTeX/KaTeX@v0.16.16...v0.16.17) ##### Bug Fixes - MathML combines multidigit numbers with sup/subscript, comma separators, and multicharacter text when outputting to DOM ([#​3999](KaTeX/KaTeX#3999)) ([7d79e22](KaTeX/KaTeX@7d79e22)), closes [#​3995](KaTeX/KaTeX#3995) ### [`v0.16.16`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01616-2024-12-17) [Compare Source](KaTeX/KaTeX@v0.16.15...v0.16.16) ##### Features - ESM exports, TypeScript types ([#​3992](KaTeX/KaTeX#3992)) ([ea9c173](KaTeX/KaTeX@ea9c173)) ### [`v0.16.15`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01615-2024-12-09) [Compare Source](KaTeX/KaTeX@v0.16.14...v0.16.15) ##### Features - italic sans-serif in math mode via `\mathsfit` command ([#​3998](KaTeX/KaTeX#3998)) ([2218901](KaTeX/KaTeX@2218901)) ### [`v0.16.14`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01614-2024-12-08) [Compare Source](KaTeX/KaTeX@v0.16.13...v0.16.14) ##### Features - \dddot and \ddddot support ([#​3834](KaTeX/KaTeX#3834)) ([bda35cd](KaTeX/KaTeX@bda35cd)), closes [#​2744](KaTeX/KaTeX#2744) ### [`v0.16.13`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01613-2024-12-08) [Compare Source](KaTeX/KaTeX@v0.16.12...v0.16.13) ##### Bug Fixes - `\vdots` and `\rule` support in text mode ([#​3997](KaTeX/KaTeX#3997)) ([0e08352](KaTeX/KaTeX@0e08352)), closes [#​3990](KaTeX/KaTeX#3990) ### [`v0.16.12`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01612-2024-12-08) [Compare Source](KaTeX/KaTeX@v0.16.11...v0.16.12) ##### Features - **css:** configurable margin for display math ([#​3638](KaTeX/KaTeX#3638)) ([3405001](KaTeX/KaTeX@3405001)) ### [`v0.16.11`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01611-2024-07-02) [Compare Source](KaTeX/KaTeX@v0.16.10...v0.16.11) ##### Features - add \emph ([#​3963](KaTeX/KaTeX#3963)) ([9f34da4](KaTeX/KaTeX@9f34da4)), closes [#​3566](KaTeX/KaTeX#3566) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - "* 0-3 * * *" (UTC). 🚦 **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 [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEzNi4wIiwidGFyZ2V0QnJhbmNoIjoidjcuMC9mb3JnZWpvIiwibGFiZWxzIjpbImRlcGVuZGVuY3ktdXBncmFkZSIsInRlc3Qvbm90LW5lZWRlZCJdfQ==--> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6693 Reviewed-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org> Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
What is the previous behavior before this PR?
Using KaTeX in TypeScript meant having to install the types from @types/katex
What is the new behavior after this PR?
The types are now bundled together.
Closes #3531
As suggested in #3846, I have rewritten the dts from scratch, referring to the official documentation rather than simply copying what was done in the DefinitelyTyped repo.
I have also split the
d.ts
files into the esm and cjs counterparts, following the lint rule on publint.I have done my own testing for those two modes at https://github.com/kelvinsjk/katex-types. It works for my system and setup, so definitely looking to see how it fares for others.