Coder Social home page Coder Social logo

Comments (6)

matthewpflueger avatar matthewpflueger commented on May 29, 2024

Ugh, never mind, I was looking for the dependency to be declared in the websockets package but I see you've got it declared in core.

from marble.

matthewpflueger avatar matthewpflueger commented on May 29, 2024

Double ugh, so my situation is that I am using a marblejs in a mono-repo. Some other project has a dependency on path-to-regexp that is really old. Using yarn resolutions I am able to get the right path-to-regexp installed for marblejs BUT because path-to-regexp is not declared as dependency on the websockets package (it is only on the core package) then when using mapToServer it finds the old path-to-regexp. Add a global resolution for path-to-regexp to 6.1.0 fixes it but this isn't the correct fix as the resolution should only be necessary for websockets.

To better explain, here is my resolutions section in package.json:

{
  "resolutions": {
    "@marblejs/core/path-to-regexp": "^6.1.0",
    "@marblejs/websockets/path-to-regexp": "^6.1.0",
    "react-router/path-to-regexp": "^1.7.0",
    "path-to-regexp": "^6.1.0"
  }
}
  • The @marblejs/core/path-to-regexp resolution doesn't work because websockets doesn't find it there, it finds the root path-to-regexp
  • The @marblejs/websockets/path-to-regexp resolution doesn't work because websockets doesn't declare path-to-regexp as a dependency (it should though)
  • react-router is one of the packages using the old path-to-regexp version
  • The global resolution fixes my issue because websockets finds the package at the root level

from marble.

matthewpflueger avatar matthewpflueger commented on May 29, 2024

I added dependency-cruiser to my project and found similar mistakes where I was using a dependency without declaring it in package.json (so easy to do with a monorepo). The default generated rules for dependency-cruiser would have caught that @marblejs/websockets was using path-to-regexp without it being declared...

from marble.

JozefFlakus avatar JozefFlakus commented on May 29, 2024

@matthewpflueger ... sorry for my late response but I have a lot of other stuff to do besides my Opensource "job". I'll try to prioritize your findings and will back to you with my suggesions and feedback. 🙌

from marble.

JozefFlakus avatar JozefFlakus commented on May 29, 2024

Here is the problem:
https://github.com/marblejs/marble/blob/master/packages/websockets/src/operators/mapToServer/websocket.mapToServer.operator.ts

As you suggested, the solution is to add path-to-regexp as a dependency. I thought that maybe it could be somehow packed as an internal utility function of @marblejs/core package so that @marblejs/websockets can reuse it, but then the result will be exactly the same - @marblejs/core has to include it... The thing is that with an introduction of version v4.0 there will be an additional module @marblejs/http that will have a direct dependency to path-to-regexp... 🤷

from marble.

matthewpflueger avatar matthewpflueger commented on May 29, 2024

@matthewpflueger ... sorry for my late response but I have a lot of other stuff to do besides my Opensource "job". I'll try to prioritize your findings and will back to you with my suggesions and feedback. 🙌

No worries and totally get it - appreciate you taking a look!

from marble.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.