Update dependency cheerio to v1.2.0 - #1246
Conversation
2eccd9a to
937d5b5
Compare
|
Cannot upgrade cheerio, Enzyme requires cheerio. Enzyme is at latest version, we might have to migrate to |
3baa17f to
d49d4f5
Compare
|
We are on the most latest version of We might need to move from enzyme to jest or react-testing-library |
13c8af3 to
f337200
Compare
78e640b to
2cfc1ae
Compare
bfada55 to
dd7ff52
Compare
48458e1 to
5105464
Compare
95f2d06 to
028e1ba
Compare
607d326 to
06825f6
Compare
| "**/acorn": "^8.0.0", | ||
| "**/material-components-web": "^0.33.0", | ||
| "**/cheerio": "1.0.0-rc.2" | ||
| "**/cheerio": "1.2.0" |
There was a problem hiding this comment.
Bug: Updating cheerio to 1.2.0 is incompatible with enzyme@^3.11.0, which relies on an internal cheerio/lib/utils module that is no longer exported. This will break all tests.
Severity: HIGH
Suggested Fix
Either update enzyme to a version that is compatible with cheerio@1.2.0, or revert the cheerio resolution back to a compatible version like 1.0.0-rc.2 or 1.0.0-rc.3.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L119
Potential issue: The update of the `cheerio` dependency to version `1.2.0` will break
the test suite. The project uses `enzyme@^3.11.0`, which is only compatible with
`cheerio` versions up to `1.0.0-rc.3`. `enzyme` internally requires the
`cheerio/lib/utils` module, but this module is no longer exposed in `cheerio` versions
`1.0.0` and newer. As a result, running tests will trigger a "Module not found" error
when `enzyme` attempts to initialize, causing all tests to fail.
| "**/acorn": "^8.0.0", | ||
| "**/material-components-web": "^0.33.0", | ||
| "**/cheerio": "1.0.0-rc.2" | ||
| "**/cheerio": "1.2.0" |
There was a problem hiding this comment.
Bug: Updating the cheerio resolution to 1.2.0 will break all JavaScript tests because the project's version of enzyme is incompatible with cheerio versions above 1.0.0-rc.3.
Severity: CRITICAL
Suggested Fix
Revert the cheerio resolution in package.json back to "**/cheerio": "1.0.0-rc.2". This will restore the workaround that keeps the test suite functional. A more permanent solution would involve upgrading enzyme and its related packages to versions compatible with modern cheerio.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L119
Potential issue: The project's test suite uses `enzyme` and `enzyme-adapter-react-15`,
which have a dependency on `cheerio`. These specific versions of `enzyme` rely on an
internal API path, `cheerio/lib/utils`, that was removed as an export in `cheerio`
version `1.0.0` and later. The previous `package.json` deliberately pinned `cheerio` to
version `1.0.0-rc.2` to maintain compatibility. This pull request updates the `cheerio`
resolution to `1.2.0`, which reintroduces the incompatibility. This will cause a module
resolution error at runtime when `enzyme` is initialized, leading to the failure of the
entire JavaScript test suite.
This PR contains the following updates:
1.0.0-rc.2→1.2.0Release Notes
cheeriojs/cheerio (cheerio)
v1.2.0Compare Source
What's Changed
.val()now supports button values by @kaioduarte in #4175.find()now properly scopes:scopeselectors by @T0nd0Tara in #4967isHtmlutility now runtime-validates input types by @Mallikarjun-0 in #4523New Contributors
Full Changelog: cheeriojs/cheerio@v1.1.2...v1.2.0
v1.1.2Compare Source
What's Changed
Full Changelog: cheeriojs/cheerio@v1.1.1...v1.1.2
v1.1.1Compare Source
91a2b3dv1.1.0Compare Source
What's Changed
.propon document nodes by @fb55 in #4320browsertopackage.jsonroot by @UNIDY2002 in #4033Doc Improvements
.htmlwith.propfor outerHTML by @fb55 in #4321New Contributors
Full Changelog: cheeriojs/cheerio@v1.0.0...v1.1.0
v1.0.0Compare Source
Cheerio 1.0 is here! 🎉
Announcement Blog Post
Breaking Changes
The minimum NodeJS version is now 18.17 or higher #3959
Import paths were simplified. For example, use
cheerio/sliminstead ofcheerio/lib/slim. #3970The deprecated default Cheerio instance and static methods were removed. #3974
Before, it was possible to write code like this:
Make sure to always load documents first:
Node types previously re-exported by Cheerio must now be imported directly
from (
domhandler)(https://github.com/fb55/domhandler). #3969htmlparser2 options now reside exclusively under the
xmlkey (#2916):New Features
Fixes
cheerio/utilsby @blixt in #2601data, and simplify by @fb55 in #2818closestbe able to start from text nodes by @Qualtagh in #2811Other
Full Changelog: cheeriojs/cheerio@v1.0.0-rc.12...v1.0.0
v1.0.0-rc.12Compare Source
Bugfix release. Fixed issues:
propundefined handling with jQuery by @fb55 in #2557cheerio/lib/utilsby @blixt in #2601New Contributors
Full Changelog: cheeriojs/cheerio@v1.0.0-rc.11...v1.0.0-rc.12
v1.0.0-rc.11Compare Source
cheerio@1.0.0-rc.11is hopefully the last RC before the 1.0.0 release of Cheerio. There are two APIs that will be added for the next major release: Anexractmethod (#2523) and NodeJS specific loader methods (#2051). These are still in flux and I'd appreciate feedback on the proposals.A big thank you to everyone that contributed to this release! This includes code contributors, as well as the amazing financial support on GitHub Sponsors!
Under the hood, a lot of work for this release went into updating parse5, cheerio's default HTML parser. Have a look at parse5's release notes to see what has changed there.
Breaking
scriptandstylecontents are added again in.text()#2509.text()to.prop('innerText')Features
cheerio-select#2511pseudosoption..prop()method:textContentandinnerTextprops #2214baseURIoption, which will lead tohrefandsrcprops to be resolved as URLs. #2510slimexport, which will always use htmlparser2 #1960Fixes
textturn passed values to strings #2047undefinedin the return type ofgetby @glen-84 in #2392undefinedreturn value #2505Refactor
domutilsmodule directly #1928isHTML#1935load#1951closest#2057Development Experience
Docs
New Contributors
Full Changelog: cheeriojs/cheerio@v1.0.0-rc.10...v1.0.0-rc.11
v1.0.0-rc.10Compare Source
Fixes:
.html(node)now moves passed nodes (#1923, fixes #940)258b26bb393e4a8f55dd8filterwork on all collections (#1870, fixes #1867)fb8d31e5cd2b9cDocumentation:
880fd2ce0c7cbbrequire5dfbd35Refactors:
traversing(#1909)58e090aistotraversing, optimize (#1908)1c6fa3edomEach(#1892)feda230loadexport a function (#1869)c370f4ev1.0.0-rc.9Compare Source
Port to TypeScript
Cheerio has been ported entirely to TypeScript (in #1816)! This eliminates a lot of edge-cases within Cheerio and will allow you to use Cheerio with confidence. This release also features a new documentation website based on TypeDoc, allowing you to quickly navigate all available methods: https://cheerio.js.org
Breaking change: If you were using the function exported by Cheerio directly instead of first
load()ing a document, you will now have to update therequireto use thedefaultexport.Please note that this way of using Cheerio is deprecated and might be removed in a future version. Please consider updating your code to:
Note: Cheerio uses template literal types to determine return types. These are available starting with TypeScript 4.1, so you might have to bump your TypeScript version.
For TypeScript types, Cheerio now implements the
ArrayLike<T>interface. That means that Cheerio instances can contain objects of arbitrary types, but not all methods can be called on them.The TypeScript compiler will figure out what structures you are operating on:
$('<div>'), it will product aCheerio<Node>type.Nodeis the base class for DOM elements and includes eg. comment and text nodes.$('.foo'), it will produce aCheerio<Element>, as onlyElements can be part of the result set.Elementis the class representing tags.$('...').map()to map to arbitrary values, and will get a compiler error when trying to call method that are not supported.$('.foo').map((i, el) => $(el).text()).attr('test')will no longer be possible, as.attris not allowed to be called on aCheerio<string>.This release does not contain other changes to functionality. Feedback is greatly appreciated; if you encounter a problem, please file an issue!
v1.0.0-rc.8Compare Source
Second botched release. Please use
v1.0.0-rc.9instead.v1.0.0-rc.7Compare Source
Published without a
libdirectory — please ignore.v1.0.0-rc.6Compare Source
Breaking:
prevAll,prevUntilandparentsUntil. The new order matches jQuery.This release contains three breaking changes inherited from dependencies.
type: 'tag'.New features:
.unwrap(#1651 by @5saviahv)2037d83.wrapAll(#1590 by @5saviahv)cd4a4d9prop('innerHTML')(#1578 by @fb55)c58258fscriptingEnabledparse5 option (#1707 by @5saviahv)7eb4cc4scriptingEnabledtofalse, it is now possible to parse the contents of<noscript>tags.Types:
.loadtype (#1584 by @f0x52)6a90bda.get(#1759 by @karlhorky)d706976.wrapAll(#1740 by @5saviahv)b360762for ofloops (#1704 by @mcpiroman)8fef5aa897b37fAttrFunctionarguments (#1669 by @maxma241)5f2e9c3Bug fixes:
undefinedas value in.attr()(#1757 by @5saviahv)98186e8{prev,next}Until(#1728 by @fb55)f2615d2bf899d5a9d6a43findfunction (#1680 by @5saviahv)9b28b49.addmodifying previous selections (#1656 by @5saviahv)9f9b49343592d6.findsiblings (#1583 by @fb55)1062a6creplaceWithreplacing element with itself (#1581 by @fb55)88ae636attrhandling ofundefinedas value (#1582 by @fb55)3b35ae4load(#1580 by @fb55)0855be6.prop(#1579 by @fb55)db3fce7b3010d70bbad23bf04330Documentation updates:
a336301290aa9ff5d6ac32ae9b14c6679ae8273e4cafter,before,slicearguments, improve handling (#1721 by @5saviahv)732d539d7c3817bdd601815e39cff3e1a4cpackage.json(#1609 by @XhmikosR)ad3e30b5b8dd60Refactors:
e8f5e98quickExpr(#1716 by @fb55)4aa3d39208bce1wrapAll, add some tests (#1640 by @5saviahv)b6d3840bfa114e63e461669ae30821de2c5eqeqeqeslint rule except for null (#1638 by @XhmikosR)52f37a1block-scoped-vareslint rule (#1631 by @XhmikosR)b072df8no-unused-expressionseslunt rule (#1630 by @XhmikosR)fc2c7d5--ignore-path(#1612 by @XhmikosR)17f0d082fb25aa36c4c77bb6cb38075cc5db93931a18c0038a3f6846CI:
b9453ea8ace785703ec16actions-gh-pages(#1626 by @fb55)9ee60cc05a4757versioning-strategy: increasefor dependabot, format71d2aafTest changes:
9743030ca7cd9bfafae511a861186f35a39.maptest was actually calling.each(#1711 by @Pustur)456fbe5.toBeUndefined()(#1659 by @XhmikosR)5aa427248596841ebe05ad60bac9990e963Commit Range:
v1.0.0-rc.5Compare Source
Hotfix release
cheerio-select-tmpuntil naming issue is resolved3751929v1.0.0-rc.4Compare Source
Welcome to
cheerio@1.0.0-rc.4! This is the last pre-release before a full1.0.0release — please make sure to test this release and report any issues you might find.This release was made possible by our supporters on Open Collective. If you want to support this project going forward, have a look at sponsorship options!
Breaking:
parse5, cheerio temporarily has a minimum Node version of Node 6. See #1585 for details.rootreference. The root node is now referenced by theparentproperty.04091a4by @fb55)New Features:
for...ofiterator viaSymbol.iterator(#1197 by @papandreou)wrapInner(9ffc557by @fb55, based on work by @tomjw64 and @warrengm)removeAttraccept a list of attributes to remove (#1561 by @fb55)prop(‘outerHTML’)implementation (#945 by @bill-bishop)Bug Fixes:
.prev()afterreplaceWith()(#1254 by @Gei0r).xmlcalls on HTML documents (#1572 by @fb55)cheerio.load()(#1087 by @zeke)locationInfooption to parse5 (#1155 by @trevorhreed)Other notable changes:
domhandlernodes directly (#1564 by @fb55)v1.0.0-rc.3Compare Source
This release corrects a test expectation that was fixed by one of the project's dependencies.
Configuration
📅 Schedule: (in timezone US/Eastern)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.