zodern / meteor-types

Tooling to use types from Meteor packages
MIT License
12 stars 4 forks source link

meteor/XXX package resolving not working (meteor 2.9.1) #6

Open perbergland opened 1 year ago

perbergland commented 1 year ago

Since only some meteor/XX packages have types, we need to get a mix of retrieving types from node_modules/@types and .meteor/local/types.

Unfortunately I cannot get this to work.

When prioritizing types in node_modules over the ones in .meteor/local as per usage instructions, I get a bunch of errors:

    "paths": {
      "meteor/*": [
        "./node_modules/@types/meteor/*",
        "./.meteor/local/types/packages.d.ts"
      ]
    },
.meteor/local/types/node_modules/package-types/meteor/package/os/packages/meteor/meteor.d.ts (3,23): File '/Users/per.bergland/Projects/refapp/refapp/.meteor/local/types/packages.d.ts' is not a module.
server/utils/http-helpers.ts (4,22): File '/Users/per.bergland/Projects/refapp/refapp/.meteor/local/types/packages.d.ts' is not a module.
server/utils/asset-utils.ts (2,43): File '/Users/per.bergland/Projects/refapp/refapp/.meteor/local/types/packages.d.ts' is not a module.
...

image

When switching the order, I get different errors (mostly for core packages like blaze and react-meteor-data that don’t have published types in meteor 2.9.1:

"paths": {
      "meteor/*": [
        "./.meteor/local/types/packages.d.ts",
        "./node_modules/@types/meteor/*"
      ]
    },

image

.meteor/local/types/node_modules/package-types/meteor/package/os/packages/meteor/meteor.d.ts (3,23): File '/Users/per.bergland/Projects/refapp/refapp/.meteor/local/types/packages.d.ts' is not a module.
.meteor/local/types/node_modules/package-types/tmeasday_check-npm-versions/package/web.browser.legacy/check-npm-versions.ts (28,21): 'e' is of type 'unknown'.
...
perbergland commented 1 year ago

OK it seems as if the fallback path simply is not used. I could work around most of the problems by adding explicit overrides for meteor packages that are NOT in .meteor/local/types

"preserveSymlinks": true,
    "baseUrl": ".",
    "paths": {
      "meteor/blaze": ["node_modules/@types/meteor/blaze.d.ts"],
      "meteor/http": ["node_modules/@types/meteor/http.d.ts"],
      "meteor/react-meteor-data": [
        "node_modules/@types/meteor/react-meteor-data.d.ts"
      ],
      "meteor/tools": ["node_modules/@types/meteor/tools.d.ts"],
      "meteor/*": [
        ".meteor/local/types/packages.d.ts",
        "node_modules/@types/meteor/*"
      ]
    },
zodern commented 1 year ago

zodern:types had originally added entries to packages.d.ts for types in @types/meteor, which allowed types in core packages to be preferred, and it to fallback to types in @types/meteor. However, this caused some types from @types/meteor to be missing, such as MongoInternal, so I removed it in https://github.com/zodern/meteor-types/commit/7c920799cd4d8241d974e176f57e87706789f759. Now that most core packages have types, it might be worth re-adding it.

I will look into the issues you found.

zodern commented 1 year ago

This seems to be the same issue as in #5 .