glimmerjs / glimmer-vm

MIT License
1.13k stars 190 forks source link

TypeScript errors #1586

Closed jelhan closed 3 months ago

jelhan commented 3 months ago

We are running into type errors with packages from this repository in ember-math-helpers:

../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;
       ~~~~~~
../node_modules/.pnpm/@glimmer+validator@0.44.0/node_modules/@glimmer/validator/dist/types/lib/validators.d.ts:78:45 - error TS2422: A class can only implement an object type or intersection of object types with statically known members.

78 declare class MonomorphicTagImpl implements MonomorphicTag {
                                               ~~~~~~~~~~~~~~

See https://github.com/RobbieTheWagner/ember-math-helpers/pull/1423 and the failing CI pipeline for reproduction.

Relevant dependencies:

NullVoxPopuli commented 3 months ago

Looks like you have @glimmer/validator 0.44.0 in your deps, which isn't supported :sweat_smile:

you can use pnpm.overrides to set a min version of @glimmer/validator.

can you provide the pnpm why @glimmer/validator output? we should fix whatever is specifying that ancient of a dep

jelhan commented 3 months ago

I don't see @glimmer/validator with 0.44.0 in the dependency tree:

$ pnpm why @glimmer/validator
Legend: production dependency, optional only, dev only

ember-math-helpers@4.0.0 /home/main/Code/open-source/ember-math-helpers/ember-math-helpers

dependencies:
ember-source 5.2.0
├─┬ @glimmer/manager 0.84.2
│ ├─┬ @glimmer/reference 0.84.2
│ │ └── @glimmer/validator 0.84.2
│ └── @glimmer/validator 0.84.2
├─┬ @glimmer/node 0.84.2
│ └─┬ @glimmer/runtime 0.84.2
│   ├─┬ @glimmer/program 0.84.2
│   │ ├─┬ @glimmer/manager 0.84.2
│   │ │ ├─┬ @glimmer/reference 0.84.2
│   │ │ │ └── @glimmer/validator 0.84.2
│   │ │ └── @glimmer/validator 0.84.2
│   │ └─┬ @glimmer/opcode-compiler 0.84.2
│   │   └─┬ @glimmer/reference 0.84.2
│   │     └── @glimmer/validator 0.84.2
│   ├─┬ @glimmer/reference 0.84.2
│   │ └── @glimmer/validator 0.84.2
│   └── @glimmer/validator 0.84.2
├─┬ @glimmer/opcode-compiler 0.84.2
│ └─┬ @glimmer/reference 0.84.2
│   └── @glimmer/validator 0.84.2
└─┬ @glimmer/program 0.84.2
  └─┬ @glimmer/manager 0.84.2
    ├─┬ @glimmer/reference 0.84.2
    │ └── @glimmer/validator 0.84.2
    └── @glimmer/validator 0.84.2
NullVoxPopuli commented 3 months ago

since you have a monorepo, what's the output of pnpm why @glimmer/validator -r?

jelhan commented 3 months ago

since you have a monorepo, what's the output of pnpm why @glimmer/validator -r?

Thanks a lot for that hint. The test app has pulled in @glimmer/validator with 0.44.0 as transitive dependency of @glimmer/tracking with version 1.1.2.

@glimmer/tracking 1.1.2
└── @glimmer/validator 0.44.0

Enforcing @glimmer/tracking to be ^0.84.3 with PNPM overrides fixed that issue.

NullVoxPopuli commented 3 months ago

I opened an issue here: https://github.com/glimmerjs/glimmer.js/issues/413