emberjs / ember.js

Ember.js - A JavaScript framework for creating ambitious web applications
https://emberjs.com
MIT License
22.46k stars 4.21k forks source link

TypeScript error because `@glimmer/tracking` depends on a very old `@glimmer/validator` #20502

Open boris-petrov opened 12 months ago

boris-petrov commented 12 months ago

🐞 Describe the Bug

Installing Ember 5.1.2 on pnpm leads to:

node_modules/.pnpm/@glimmer+manager@0.84.2/node_modules/@glimmer/manager/dist/types/lib/public/modifier.d.ts:45:5 - error TS2416: Property 'getTag' in type 'CustomModifierManager<O, ModifierInstance>' is not assignable to the same property in base type 'InternalModifierManager<CustomModifierState<ModifierInstance>, object>'.
  Type '({ tag }: CustomModifierState<ModifierInstance>) => UpdatableTag' is not assignable to type '(modifier: CustomModifierState<ModifierInstance>) => UpdatableTag | null'.
    Type 'MonomorphicTagBase<MonomorphicTagTypes.Updatable>' is missing the following properties from type 'MonomorphicTagBase<MonomorphicTagTypes.Updatable>': [TYPE], [COMPUTE]

45     getTag({ tag }: CustomModifierState<ModifierInstance>): UpdatableTag;
       ~~~~~~

🔬 Minimal Reproduction

Repo.

Run pnpm install and then ./node_modules/.bin/tsc.

😕 Actual Behavior

Type errors in node_modules.

🤔 Expected Behavior

No errors.

🌍 Environment

cc @chriskrycho, @NullVoxPopuli

A discussion:

https://discord.com/channels/480462759797063690/1125100083277463763

NullVoxPopuli commented 12 months ago

The problem is that, we need to fix ember's use of @glimmer/tracking.

v2 beta has the correct @glimmer/validator range: https://github.com/glimmerjs/glimmer.js/blob/master/packages/%40glimmer/tracking/package.json#L26

but the one ember folks use does not: https://github.com/glimmerjs/glimmer.js/blob/v1.1.2/packages/%40glimmer/tracking/package.json#L23

^0.44.0 is only the 0.44.x range, so pnpm is alerting us to another misconfiguration in our deps :sweat_smile: